지금이 그냥 이상한 테스트 :루씬 동작은
은 다음과 같습니다 RhinoMocks (어설 통과)와 NUnit과 단위 테스트에서 잘 작동으로 코드입니다.
이것은 코드에서 IndexSearcher를 생성합니다. 이제 조롱 된 버전의 Get (IndexSearcher의 주석 처리 된 할당을 스왑)을 사용하면 모의자가 검색자를 반환하므로 어설 션을 전달하지 않습니다.
왜 그런지 알아낼 수 있습니까? (NUnit과 2.5.2 - RhinoMocks 3.6 - 루씬 2.9.2)
[Test]
public void Test()
{
ISearcherManager searcherManager = _repository.StrictMock<ISearcherManager>();
Directory directory = new RAMDirectory();
IndexWriter writer = new IndexWriter(directory, new StandardAnalyzer(), true);
searcherManager.Expect(item => item.Get()).Return(new IndexSearcher(writer.GetReader())).Repeat.AtLeastOnce();
_repository.ReplayAll();
//searcherManager.Get();
Document doc = new Document();
doc.Add(new Field("F", "hello you", Field.Store.YES, Field.Index.ANALYZED));
writer.AddDocument(doc);
IndexSearcher searcher = searcherManager.Get();
//IndexSearcher searcher = new IndexSearcher(writer.GetReader());
QueryParser parser = new QueryParser("F", new StandardAnalyzer());
Query q = parser.Parse("hello");
TopDocs hits = searcher.Search(q, 2);
Assert.AreEqual(1, hits.totalHits);
}
어설 션이 실패하면 그 이유는 무엇입니까? 코뿔소에서 뭔가를 얻고 있어요. 모크? – PatrickSteele
결과가 없으므로 어설 션이 실패합니다. 나는 수색자를 지 으려는 작가를 알아 보았고 나는 아직도 작가를 얻는다. – Khash