在模块里配置的 Provider,可以使用一个类,也可以是一个具体的数值。如果用的是类,Nest 会帮我们实例化这个类,或者获取到已经存在的这个类的一个实例。如果你想自己去创建类的实例,或者使用某个具体的值,在配置 Provider 的时候,可以使用 useValue。
比如在这个 AppModule 文件里面,添加一个值,名字叫 mockAppService ,它的值是个对象,对象里可以添加一个 getHello 方法,设置一下这个方法 return 的值,设置成您好。
在模块里配置这个 Provider 的时候,因为我想使用一个值,可以把 AppService 换成一个对象,对象里面,先用 provide 设置一下这个 Provider 的 token ,这个 token 可以用一下 AppService 这个类。
然后再用一个 useValue 设置一下这个 Provider 的值,用一下上面定义的这个 mockAppService 。
在 AppController 里面,注入了一个 AppService 依赖,现在跟这个 AppService token 对应的是一个具体的值,就是在 AppModule 里面定义的这个 mockAppService 对象。因为在配置这个 AppService Provider 的时候,用的是 useValue,设置了一下具体的值。
在 Http 客户端,请求一下应用的根,这次返回的值是 您好。 就是 mockAppService 这个对象里的 getHello 方法返回的一个字符串类型的值。