@Singleton
@Component(modules = {LoginModule.class, HTTPModule.class})
public interface LoginComponent {
}
@Module(includes = {HTTPModule.class})
public class LoginModule {
@Provides
@Singleton
public MyThing provideMyThing(OkHttpClient client) {
// Do things with it
}
}
@Module
public class HTTPModule {
@Provides
@Singleton
public OkHttpClient provideOkHttpClient(){
// Return the OkHttpClient
}
}
如果有人能给我指明正确的方向,我将不胜感激。
提前道谢!
您使用依赖注入的方式仍然保持代码的紧密耦合。一般来说,您希望您的依赖项是接口,而不是实际的类。这使您的代码保持良好和松散,易于阅读、修改和维护。
将网络操作隐藏在接口后面,允许您在需要时修改网络实现。在您的情况下,这可以用于测试,但它也允许您在不更改任何其他代码的情况下,在将来想要或需要时切换出网络库。
试试这样的方法:
@Module
public class HTTPModule {
@Provides
@Singleton
public NetworkProvider provideNetworkProvider(){
// Return the Network provider
}
}
网络抽象层:
public interface NetworkProvider {
// Methods to send requests and receive async responses
}
OkHttp实现:
public class OkHttpNetworkProvider implements NetworkProvider {
// Implement NetworkProvider. This is the only class that
// knows about OkHttp and its components
}
这是我的项目的结构。 父级不包含代码。 模块child1是一个Spring引导应用程序。 模块child2和child3是JAR库。 Child1依赖于child2和Child3 特别是: child1中的测试被注释为SpringBootTest,但child2和child3最好不依赖于spring boot(仅用于autowiring的spring框架) 我希望能够在子模块中的配置类上使用@va
2.6. 测试模块 所有的 Python 模块都是对象并且有几个有用的属性。 您可以使用这些属性方便地测试您所书写的模块。 下面是一个使用 if __name__ 的技巧。 if __name__ == "__main__": 在继续学习新东西之前, 有几点重要的观察结果。 首先, if 表达式无需使用圆括号括起来。 其次, if 语句以冒号结束, 随后跟随的是 缩进代码。 与 C 一样, Py
让我们创建一个名为的新模块,并在那里定义CounterService。 app/shared/shared.module.ts 现在我们将引入 SharedModule 到AppModule 和中。 app/lazy/lazy.module.ts 使用此配置,两个模块的组件都可以访问CounterService。 我们将以完全相同的方式在EagerComponent和LazyComponent中使
问题内容: 每当我想测试使用资源注入的类时,我最终都会包含一个仅在测试中使用的构造函数: 还有另一种模拟资源注入的方式,或者这是遵循的正确模式吗? 问题答案: 您可以使用简单的光泽效果,它可以模拟EJB注入系统。 另一种方法是在测试中使用反射来设置字段,我有时使用类似这样的内容:
我很困惑于嘲笑如何对实现进行单元测试。问题是我想嘲笑不同的预期行为。 有没有办法做到这一点?由于导入只能在文件的顶部,并且为了能够模拟某些内容,必须在导入之前声明它。我也试图传递一个本地函数,这样我就可以覆盖行为,但jest抱怨你不允许传递任何本地的东西。 在内部,可以想象使用
我最终做的是在测试设置过程中替换应用程序级图(MockRestAdapter就是在其中创建的