我对Golang很陌生,我对测试有疑问 我有一个测试,我想检查一下弹性搜索中客户的持久性是否有效。我已将代码缩减到关键部分并将其发布在github:(https://github.com/fvosberg/elastic-go-testing)
问题是,在我可以搜索之前,我必须等待elasticsearch索引新文档。除了等待一秒钟还有其他选择吗?这感觉非常难看,但我不知道如何以另一种方式测试集成(使用弹性搜索以及小写电子邮件地址......)。
这个问题有解决方案吗?
package main
import (
"github.com/fvosberg/elastic-go-testing/customer"
"testing"
"time"
)
func TestRegistration(t *testing.T) {
testCustomer := customer.Customer{Email: "testing@test.de"}
testCustomer.Create()
time.Sleep(time.Second * 1)
_, err := customer.FindByEmail("testing@test.de")
if err != nil {
t.Logf("Error occured: %+v\n", err)
t.Fail()
} else {
t.Log("Found customer testing@test.de")
}
}
答案 0 :(得分:1)
Elasticsearch有一个flush命令,对这种情况很有用。由于您使用elastic
项目作为接口,因此您可以使用以下内容(客户端是您的ES客户端):
...
testCustomer.Create()
res, err := client.Flush().Do()
if err != nil {
t.Fatal(err)
}
_, err := customer.FindByEmail("testing@test.de")
...