在没有睡眠的情况下在Golang中测试Elasticsearch

时间:2016-08-01 21:38:29

标签: testing asynchronous elasticsearch go

我对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")
    }
}

1 个答案:

答案 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") ...