Play Framework 2.1.1不会调用mockito。

时间:2013-04-22 10:06:20

标签: java mocking playframework-2.0 mockito

我正在尝试模拟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中嘲笑这个?

1 个答案:

答案 0 :(得分:0)

您的deals()方法正在制作新的Finder,而不是使用您创建的模拟方法。您将需要稍微重构一下代码,以使其更易于测试。您可能需要阅读https://code.google.com/p/mockito/wiki/MockingObjectCreation,了解有关如何执行此操作的几点建议。