2017-08-11 112 views
0

嗨我运行我的测试时出现此错误我已阅读承诺并完成我仍然不确定将它放在我的测试中,还是最好在每个之前做一个保存重复?实现已完成的承诺的最佳方式是在哪里和什么?随机失败JS测试

错误:超过2000ms的超时。对于异步测试和挂钩,确保 “done()”被调用;如果返回Promise,请确保解决。

const chakram = require('chakram'); 
const expect = chakram.expect; 


describe("Json assertions", function() { 
    it("Should return the matching test file and have a 200 response", function() { 

     let expected = require('../../test/fixtures/testfile.json'); 
     let response = chakram.get("http://test"); 
     expect(response).to.have.json(expected); 
     expect(response).to.have.status(200); 
     return chakram.wait(); 
    }); 
}); 
+1

那么,如果'http:// test'不可用?这个承诺会解决吗? – Bergi

回答

0

我不熟悉chakram,但通常这里应该有测试你的承诺的工作模式(使用done):

describe('Test Suite', function() { 
    it('should do something...', function(done) { 
    const testValue = 'testValue'; 
    someAsyncFunction(testValue).then(function(result) { 
     result.should.have.property('foo'); 
     result.should.have.property('bar'); 
     done(); 
    }); 
    ]); 
}); 

现在对于你所拥有的,它看起来像docs for Chakram演示如何使用承诺进行测试(在Promises标头下)。所以,你的适应代码将是这样的:

const chakram = require('chakram'); 
const expect = chakram.expect; 

describe("Json assertions", function() { 
    it("should...", function() { 
    let expected = require('../../test/fixtures/testfile.json'); 
    chakram.get("http://test").then(function(response) { 
     expect(response).to.have.json(expected); 
     expect(response).to.have.status(200); 
    }); 
    }); 
}); 

再说一遍,我不知道该库,但如果你的测试运行仍然埋怨done,加done像这样:

describe("Json assertions", function() { 
    it("should...", function (done) { 
    let expected = require('../../test/fixtures/testfile.json'); 
    chakram.get("http://test").then(function(response) { 
     expect(response).to.have.json(expected); 
     expect(response).to.have.status(200); 
     done(); 
    }); 
    }); 
}); 

编辑: donedescribe区块,应该在it

+0

谢谢。这非常有用。 –