javascript - 避免在 Mocha 测试的 Elasticsearch 请求中使用 setTimeout()

标签 javascript node.js elasticsearch asynchronous

我正在使用 Mocha 框架为 API 编写单元测试,我的 API 使用 elasticsearch。

在本例中,我正在编写一个后测试并在之后删除它(在 after 中)。

这里的问题是,当delete运行时,这些值还不存在于数据库中。如果我将删除请求包装在 setTimeout() 中,如下所示,它可以正常工作。

在这种情况下如何避免使用 setTimeout()

describe('POST New Group', function() {
    this.timeout(MOCHA_TIMEOUT)
    const optionsPost = {
        'method': 'POST',
        'uri': `http://localhost/groups`,
        'json': true,
        'body': {
            "name": "Test",
            "desc": "Lorem ipsum dolore",
            "games": []
        }
    }
    const optionsDelete = {
        'method': 'DELETE',
        'uri': `http://localhost/groups/Test`,
        'json': true
    }

    after(function() {
        console.log("Started delete")

        setTimeout(() => {
            request.delete(optionsDelete, (err, res, body) => {
                console.log("Finished delete")
                assert.equal(res.statusCode, 200)
            })
        }, 1000)


    })

    it('Should return success message with the status code \'201 Created\'', function(done) {
        console.log("Started post")
        request.post(optionsPost, (err, res, body) => {
            console.log("Finished post")
            assert.equal(body.status, 'Group created')
            assert.equal(res.statusCode, 201)
            done()
        })
    });
});

最佳答案

更好的选择是在索引时设置{"refresh": true}。这告诉elasticsearch在索引时刷新它并使数据可用。因此,在您的情况下,您不需要在发布和删除之间进行额外的刷新 api 调用

关于javascript - 避免在 Mocha 测试的 Elasticsearch 请求中使用 setTimeout(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58958850/

相关文章:

javascript - 如何将我想要删除的记录的 ID 传递到 Remodel 窗口

node.js - backbone.js 和express : trouble searching a mongodb collection by field with a query string

node.js - Heroku:更新 Node 版本不起作用

php - 用于 symfony 3 的 FOSElasticaBundle?

json - 识别 Kibana 和 ElasticSearch 中的时间戳

javascript - 从回调函数中返回 JSON 数据

javascript - 重用页脚 html 代码

javascript - WinJS.UI.ListView - 使用 JavaScript 构建模板时刷新项目

javascript - 使用nodejs处理mysql连接

elasticsearch - 如何连接Play!通过Ebean到ElasticSearch的框架