我正在尝试模拟Model.finder来测试我的服务,但似乎mockito因某些原因没有注入,我无法弄清楚原因。请帮忙。
public static Result deals() {
List<Product> finder = new Model.Finder<Long, Product>(Long.class, Product.class).all();
JsonNode jsonNode = Json.toJson(finder);
return ok(Json.stringify(jsonNode));
}
这是我的考试
@Mock
private Model.Finder finder;
@Before
public void setUp() throws Exception {
initMocks(this);
start(fakeApplication());
Product product = new Product();
product.id = 1L;
product.title = "Milk";
List<Product> products = Arrays.asList(product);
when(finder.all()).thenReturn(products);
}
@Test
public void shouldGetDeals() {
Result result = routeAndCall(fakeRequest(GET, "/products"));
assertThat(status(result), is(200));
String deals = contentAsString(result);
assertThat(deals, containsString("Milk"));
}
因此,结果是Model.Finder返回0,因为不调用mock。我不确定你是否在Play 2.1中嘲笑这个?
答案 0 :(得分:0)
您的deals()
方法正在制作新的Finder
,而不是使用您创建的模拟方法。您将需要稍微重构一下代码,以使其更易于测试。您可能需要阅读https://code.google.com/p/mockito/wiki/MockingObjectCreation,了解有关如何执行此操作的几点建议。