因此,我需要测试应用程序的服务层(我需要测试一些方法-这是我与测试部分的第一次接触)

public void testGetAllOrderedDescByRating() {

    FAQ faq1 = initFAQ(new FAQ(), 5, 1L);
    FAQ faq2 = initFAQ(new FAQ(), 3, 2L);
    FAQ faq3 = initFAQ(new FAQ(), 11, 3L);

    EasyMock.expect(faqDao.getAllOrderedDescByRating()).andReturn(
            new ArrayList<FAQ>());
    EasyMock.expect(faqDao.makePersistent((FAQ) EasyMock.anyObject()))
            .andReturn(new FAQ());

    EasyMock.replay(faqDao);

    FAQService.saveFAQ(faq1);
    FAQService.saveFAQ(faq2);
    FAQService.saveFAQ(faq3);

    List<FAQ> list = FAQService.getAllOrderedDescByRating();

    Assert.assertEquals(list.get(0).getRating(), 11.0);
    Assert.assertEquals(list.get(1).getRating(), 5.0);
    Assert.assertEquals(list.get(2).getRating(), 3.0);
    EasyMock.verify(faqDao);
}


界面中的方法:


  列出getAllOrderedDescByRating();


我收到:


  java.lang.AssertionError:
  意外的方法调用
  makePersistent(faq.FAQ@3461d1):
      getAllOrderedDescByRating():预期:1,实际:0
      makePersistent():预期:1,实际:1(+1)


我做错了什么?

最佳答案

看起来您在EasyMock看到了您执行的3个saveFAQ调用,但是您尚未对其进行告知。您致电的FAQService是否有可能连接到faqDao?

我希望您将3个FAQ项添加到返回的ArrayList中,而不是返回一个空的,并且根本不需要调用saveFAQ()方法(因此删除对它的三个调用)。

List<FAQ> l = new ArrayList<FAQ>();
FAQ faq1 = initFAQ(new FAQ(), 5, 1L);
l.add(faq1);
FAQ faq2 = initFAQ(new FAQ(), 3, 2L);
l.add(faq2);
FAQ faq3 = initFAQ(new FAQ(), 11, 3L);
l.add(faq3);

EasyMock.expect(faqDao.getAllOrderedDescByRating()).andReturn(l);

09-16 07:18