我试着做单元测试用例这里是我的功能。
@SpringBootTest
public class ABCTests{
@Autowired
private VDao vDao;
@Test
public void addDummyVan() {
Mono<Van> vmono = Mono.just(createDummyVan());
vDao.addVan(vmono).doOnNext(v-> assertNotNull(v.getId()));
}
}
为了测试这个。在vDao.addVan
函数中,我返回Mono<Van>
,其中货车对象故意将id值保持为null。但测试用例仍未失败。
1条答案
按热度按时间ruarlubt1#
在您的代码中,
doOnNext
运算符用于副作用,它不会影响测试Assert。assertNotNull
调用不是React流的一部分,因此它不会在React流的执行期间执行。要正确测试
addVan
方法的行为,您应该使用为React式代码设计的测试框架,例如Project Reactor的StepVerifier
。以下是如何修改测试以使用StepVerifier
:在此修改后的测试中:
1.我们使用
StepVerifier.create
为vDao.addVan(vmono)
返回的React流创建一个验证器。1.我们使用
expectNextMatches
来期望流(v
)发出的下一个元素满足v.getId()
不为null的条件。1.我们使用
verifyComplete
来确保流在发出预期的元素后成功完成。使用这种方法,如果
addVan
方法在React流中发出Van
对象之前没有正确设置id
对象中的id
字段,则测试将失败。这允许您准确地测试响应式代码的行为。