在.NET上测试Elasticsearch

4

使用Java,我可以编写针对嵌入式elasticsearch节点的测试。这为我提供了许多测试可能性,例如测试索引配置和分词器。然而更重要的是,我可以使用功能强大、易于阅读和有效的测试来测试我的搜索服务,无需在我的测试中模拟客户端并处理查询构建器和响应等。那么在.NET中,我该如何做到这一点呢?

2个回答

7
你不能在.NET的嵌入式模式下运行,你需要与某个elasticsearch服务器通信。
使用nest,你可以轻松地与不同的索引进行交互,特别是用于测试的索引。
var uri = new Uri("http://localhost:9200");
var connectionSettings = new ConnectionSettings(uri, "my-test-index");
var client = new ElasticClient(connectionSettings);

"

my-test-index现在将用作每次调用的索引,如果没有明确指定索引。根据您的测试有多少侵入性,甚至可以创建一个带有guid后缀的索引,并在每次测试运行后删除该索引。

当运行集成测试时,NEST本身也采用此方法: https://github.com/elastic/elasticsearch-net/blob/develop/src/Tests/Nest.Tests.Integration/IntegrationSetup.cs

"

发布后不久,我意识到自己有点傻,当然不可能运行嵌入式.NET实例。在点击您的链接之前,我认为我应该在某个地方拥有一个测试实例,并像您一样创建和删除索引 :) 谢谢! - shmish111
@Henrik,你能更新一下链接吗?它似乎已经失效了。 - Madison Haynie

3
这实际上是非常容易实现的。
请查看Github上的ElasticSearch-Inside项目。
基本上,这允许您从集成/单元测试中启动ElasticSearch。这是通过Java运行时和ElasticSearch都嵌入在库的dll中实现的。
安装nuget包并在您的单元测试中使用它的说明在项目的github页面上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接