use*_*775 1 java spring unit-testing mockito springrunner
我有一个服务类,它使用构造函数扩展另一个服务。这个类有一个自动装配的字段和一个我想使用 Mockito 进行单元测试的方法。但是,我在为其编写一个单元时遇到了困难。
假设该服务看起来有点像这样:
@Service
public class SomeService extends Service {
@Autowired
private SomeClient someClient;
public SomeService(Product product, @Qualifier(Constants.SOME_BEAN) Details temp) {
super(product, temp);
}
@Override
public State create() {
Request request = new Request();
request.set...
request.set..
Status status = someClient.createTenant(request);
..
.. // construct a State object and return
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在为这个类编写一个测试,并尝试对上面的 create() 方法进行单元测试。当我的测试调用此方法时,我在模拟 someClient 时遇到问题。
测试类看起来有点像:
@RunWith(MockitoJUnitRunner.class)
public class SomeServiceTest {
private Detail temp;
private SomeFacade service;
private SomeClient someClient;
private Product product;
@Before
public void setup() {
temp = mock(Details.class);
product = mock(Product.class);
service = spy(new SomeService(product, temp));
someClient = mock(SomeClient.class);
}
@Test
public void test() {
Status status = new Status();
status.setStatus(...);
when(someClient.createTenant(any())).thenReturn(status);
State state = service.create();
// asserts
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是,当我在上面的测试中调用 service.create 时,测试
someClient.createTenant(request);方法中的调用应该被模拟以返回一个值,这是我无法正常工作的。有什么帮助吗?
我们可以使用 Mockito 的@InjectMocks-annotation将模拟注入到我们的测试单元中。为此,我们还需要
setup()并@Mock评论:
setup()通过手动注入创建被测试的单元when:when(someClient.createTennant(any(Request.class)))...spy被测单元上的 是多余的。| 归档时间: |
|
| 查看次数: |
1725 次 |
| 最近记录: |