给定一个要测试的组件,需要String在其构造函数注入中使用不可模拟的class(),如下所示:
public class MyService {
@Inject
public MyService(String param1, SomeObject param2) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想用Mockito用这样的测试工具测试它:
public class MyServiceTests {
@Mock
private SomeObject someObject;
@InjectMocks
private MyService service;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我不能@Spy或@MockStrings(因为String是最后一堂课).那么我怎样才能使用Mockito并为构造函数的param1参数"注入"一个特定的String值MyService(或者测试这个需要传递非null String的类)?
Dav*_*ave 14
我认为简单的答案不是使用@InjectMocks,而是直接初始化你的对象.我能看到的唯一缺点就是你没有测试注射,但是@InjectMocks我认为你会用Mockito的注射实现来测试它,而不是你真正的框架实现,所以没有真正的区别.
我会做:
public class MyServiceTests {
@Mock
private SomeObject someObject;
private MyService service;
@Before
public void setUp() {
service = new MyService("foo", someObject);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11736 次 |
| 最近记录: |