gpt4 book ai didi

scala - 我如何单元测试/模拟 ElasticSearch

转载 作者:行者123 更新时间:2023-11-29 02:47:33 25 4
gpt4 key购买 nike

首先,我在我的应用程序中使用 Scala 和 sbt。

我正在使用 elastic4s 库的 ElasticClient 连接到我的 ES 实例。所以基本上我只需要能够在我的单元测试中测试这些。比如只是验证我的数据是否真的进入了 ES 之类的。

模拟 ElasticSearch 是最好的方法还是有更有效的方法?我将如何处理其中任何一个?

我发现您可以使用 ElasticClient.local 设置本地客户端,但我似乎找不到很多示例。我们想继续这个实现,所以如果你知道如何使用它,我想听听它,但如果有更好或更简单的方法来完成它,那将是可行的。

最佳答案

在我自己的代码中,我最近编写了一个用于测试的小型可嵌入 Elasticsearch 。它将东西存储在磁盘上,然后可以在使用后删除文件。我用它来运行我的各种 elasticsearch 单元测试。

它构建了一个单节点 Elasticsearch 集群。该节点支持完整的 elasticsearch API。

 /**
* A simple embeddable Elasticsearch server. This is great for integration testing and also
* stand alone tests.
*
* Starts up a single ElasticSearch node and client.
*/
public class EmbeddedElasticsearchServer
{
public EmbeddedElasticsearchServer(String storagePath) {

storagePath_ = storagePath;
ImmutableSettings.Builder elasticsearchSettings = ImmutableSettings.settingsBuilder()
.put("http.enabled", "false")
.put("path.data", storagePath_);

node_ = new NodeBuilder()
.local(true)
.settings(elasticsearchSettings.build())
.node();

client_ = node_.client();
}



public Client getClient() {
return client_;
}


public void shutdown()
{
node_.close();
}

public void deleteStorage() throws IOException
{
File storage = new File(storagePath_);

if(storage.exists())
{
FileUtils.deleteDirectory(storage);
}

}

private Client client_;
private Node node_;
private String storagePath_;
}

要使用它,只需调用 getClient,然后您就可以正常使用 Elasticsearch Java API。

关于scala - 我如何单元测试/模拟 ElasticSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34141388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com