0

このテストを機能させる方法を考えています。以下はテスト方法です: ご覧のとおり、correlationId と docFamilyUUid は UUID クラスによってランダムに生成されます。基本的に、getDocInfo は最初に mockDao で findAllByDocId を呼び出し、それが null を返す場合、データベースに保存される docInfo オブジェクトを作成します。

void testGetDocInfo()
    {
        def String docId = 'I19292800fe1911e0a849005056932b99'
        def List<DocInfo> expectedResult = [expectedDocInfo]
        expect(mockDocInfoDao.findAllByDocId(docId)).andReturn(null)
        mockDocInfoDao.save(new DocInfo())
        replay(mockDocInfoDao)
        docInfoServiceImpl.getDocInfo(docId)
        verify(mockDocInfoDao)
    }

///////// DocInfoServiceClass

 public final DocInfo createDocInfo(final String docId)
    {
        final DocInfo docInfo = new DocInfo();
        docInfo.setId(docId);
        docInfo.setDocFamilyUuid(UUIDGenerator.getInstance().getUuidAsString());
        docInfo.setCorrelationId(UUIDGenerator.getInstance().getUuidAsString());
        return docInfo;
    }
    /**
     * @param docId is the document Id
     * @return the list of DocInfo objects for a particular docId
     */
    public final List<DocInfo> findAllByDocId(final String docId)
    {
        return docInfoDao.findAllByDocId(docId);
    }

    /**
     * @param docId is the document Id
     * @return the list of DocInfo objects for a particular docId
     */
    public final List<DocInfo> getDocInfo(final String docId)
    {
        List<DocInfo> docInfoList = null;
        docInfoList = docInfoDao.findAllByDocId(docId);
        if (docInfoList == null)
        {
            docInfoList = new ArrayList<DocInfo>();
            DocInfo docInfo = createDocInfo(docId);
            docInfoDao.save(docInfo);
            docInfoList.add(docInfo);
        }

        return docInfoList;
    }
4

1 に答える 1

1

createDocInfo メソッドのみをモックアウトするには、部分モックを使用する必要があります。このようにして、そこから必要なもの、特に選択した ID を持つ DocInfo のインスタンスを返すことができます。このようにして、getDocInfo の動作に必要なアサーションを行うことができます (保存と追加に同じ ID を持つインスタンスが渡されることを確認するなど)。

部分的なモッキングについては、こちらを参照してください。使用している EasyMock のバージョンが記載されていないので、古すぎないと思います。

于 2012-09-19T17:19:13.563 に答える