【发布时间】:2010-08-02 22:55:01
【问题描述】:
现在这很奇怪:
下面的代码在带有 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);
}
【问题讨论】:
-
assert 失败,是什么原因?你有从 Rhino.Mocks 得到什么吗?
-
断言失败,因为没有结果。我查了一下,我仍然有一个作家来构建搜索器。