尽管未实现URL处理程序,但Mocha测试还是可以的

时间:2018-10-18 15:24:53

标签: node.js typescript mocha google-cloud-functions

我创建了firebase函数,我想使用Google Cloud Function Emulator和Mocha在本地进行测试。

因此我在Mocha中创建了一个测试,以使用PUT方法测试REST API更新记录功能。

测试像这样

it("should succesfully update data",()=>{
    chai.request(api)
        .put(`/clients/${someId}`)
        .set('Authorization', sometoken)
        .send(somenewdata)
        .end((error,response)=>{
            expect(response.status, "should be 200").to.equal(200);
})

运行测试时。没关系。

问题是我尚未实现对“ clients /:id” URL的PUT方法请求的处理程序。因此,显然结果应该是超时。我也尝试运行模拟器,并使用POSTMAN发送PUT请求,并且得到了预期的超时结果。

其他详细信息:

“ @ types / mocha”:“ ^ 5.2.5”

有人对此有任何想法吗?

1 个答案:

答案 0 :(得分:0)

这是因为chai.request是异步函数,因此必须在测试完成时告诉Mocha。解决方法是我们可以使用done

it("should succesfully update data",(done) => { // specify done
    chai.request(api)
        .put(`/clients/${someId}`)
        .set('Authorization', sometoken)
        .send(somenewdata)
        .end((error,response)=>{
           expect(response.status, "should be 200").to.equal(200);
           done(); // add done
        })
})

参考: https://mochajs.org/#asynchronous-code