下面的测试方法出现在春季指南教程中。是否有不那么复杂的语法来编写此测试,或者如何将其分解为更小的块?
verify(orderService).createOrder(
org.mockito.Matchers.<CreateOrderEvent>argThat(
allOf( org.hamcrest.Matchers.<CreateOrderEvent>
hasProperty("details",
hasProperty("dateTimeOfSubmission", notNullValue())),
org.hamcrest.Matchers.<CreateOrderEvent>hasProperty("details",
hasProperty("name", equalTo(CUSTOMER_NAME))),
org.hamcrest.Matchers.<CreateOrderEvent>hasProperty("details",
hasProperty("address1", equalTo(ADDRESS1))),
org.hamcrest.Matchers.<CreateOrderEvent>hasProperty("details",
hasProperty("postcode", equalTo(POST_CODE)))
)));
您可以切换 hasProperty 和 allOf 匹配器。
verify(orderService).createOrder(
org.mockito.Matchers.<CreateOrderEvent>argThat(
org.hamcrest.Matchers.<CreateOrderEvent>hasProperty("details",
allOf(
hasProperty("dateTimeOfSubmission", notNullValue()),
hasProperty("name", equalTo(CUSTOMER_NAME)),
hasProperty("address1", equalTo(ADDRESS1)),
hasProperty("postcode", equalTo(POST_CODE)))
)));
另一种方法是使用参数捕获器来记录您尝试验证的参数值。
然后,您可以根据需要对值执行断言。与使用匹配器相比,这是一种更清晰的方法来验证参数信息是否符合预期。
这在这篇伟大的博客文章中得到了更全面的解释:
http://www.planetgeek.ch/2011/11/25/mockito-argumentmatcher-vs-argumentcaptor/