【发布时间】:2020-07-08 10:55:32
【问题描述】:
我可以看到时间戳有所不同。我想避免比较时间戳。我尝试使用 not() 但没有运气。
OffsetDateTime offsetDateTime = OffsetDateTime.now();
RequestInfo requestInfo = new RequestInfo();
requestInfo.setDeviceId("mobile11");
requestInfo.setToken("1234567");
service.updateDeviceInformation(requestInfo);
then(repo).should().mergeRequestInformation(defaultEntryBuilder(offsetDateTime).build());
RequestInformationRepository.java
private final EntityManager entityManager;
public RequestInformation mergeRequestInformation(RequestInformation requestInformation) {
return entityManager.merge(requestInformation);
}
我遇到了这个错误
Error: Argument(s) are different! Wanted:
se.repository.RequestInformationRepository#0
bean.mergeRequestInformation(
RequestInformation(token=1234567, deviceId=mobile11, createdOn=2020-07-08T12:29:02.992775+02:00) );
-> at se.service.RegisterServiceTest.shouldStoreRegisterEntryInRepository(ServiceTest.java:43)
Actual invocations have different arguments:
se.repository.RequestInformationRepository#0
bean.mergeDeviceInformation( RequestInformation(token=1234567, deviceId=mobile11, createdOn=2020-07-08T12:29:02.999827+02:00) );
【问题讨论】:
-
您应该添加有关 mergeRequestInformation 的信息。这个方法的参数的类型是什么?
-
虽然它直接存储库调用。有问题添加。
-
将时间视为依赖项 - 您的单元测试不应与挂钟时间耦合,注入一个提供时间的协作者,以便您可以用测试替身替换它。
标签: java mockito spring-boot-test