0

したがって、アプリケーションのサービスレイヤーをテストする必要があります(いくつかのメソッドをテストする必要があります-これはテストセクションとの最初の接触です)

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)

私が間違っているのは何ですか?

4

1 に答える 1

3

EasyMockが認識しているsaveFAQ呼び出しを3回実行しているように見えますが、それについては説明していません。あなたが呼び出すFAQServiceがあなたのfaqDaoに接続されている可能性はありますか?

空のアイテムを返す代わりに、返すArrayListに3つのFAQアイテムを追加し、saveFAQ()メソッドを呼び出す必要がまったくないことを期待します(したがって、3つのFAQアイテムを削除します)。

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);
于 2009-12-22T08:33:50.717 に答える