現在這只是奇怪:Lucene的行爲測試
,因爲它是低於與RhinoMocks(斷言通過)一個NUnit的單元測試工作正常的代碼。
這是在代碼中創建一個IndexSearcher。 現在,如果我使用模擬版本的Get(交換IndexSearcher的註釋賦值),那麼現在搜索器被模擬返回,它不會傳遞斷言。
任何人都可以找出原因嗎? (NUnit的2.5.2 - RhinoMocks 3.6 - Lucene的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);
}
當斷言失敗時,原因是什麼?你從Rhino.Mocks獲得什麼? – PatrickSteele 2010-08-03 02:06:50
聲明失敗,因爲沒有結果。我檢查了一下,我仍然找到一位編輯來建立搜索者。 – Khash 2010-08-03 09:22:13