[英]Mocha test error when testing code with jquery promise
我正在嘗試測試以下代碼。 基本上,服務器拒絕此請求,因為某些參數未按照api規范的要求發送。 Api.createRecord
在Api.createRecord
使用jquery.ajax
並在調用時返回jquery
promise。
describe("Creating test record with incorrect data", ()=> {
const params = {tId:"12323","col":"colValue"};
it('Should not create new record', (done) => {
const result = Api.createRecord(params);
console.log(result);
expect(result)
.to.eventually.equal(null)
.notify(done);
});
});
當我運行此代碼時,出現以下錯誤。
Error: done() invoked with non-Error: {"readyState":0,"status":0,"statusText":"SyntaxError"}
at mightThrow (node_modules/jquery/dist/jquery.js:3583:29)
at Window.process (node_modules/jquery/dist/jquery.js:3651:12)
at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:524:19)
我無法找出問題所在。 我的代碼或其他地方是否有問題。
這就是我發送ajax請求的方式。
sendRequest(URL, dataToSend) {
return $.ajax({
type : 'POST',
url : URL,
crossDomain : true,
data : JSON.stringify(dataToSend),
dataType : 'json'
}).fail((responseData) => {
if (responseData.responseCode) {
console.error(responseData.responseCode);
}
});
},
上面的代碼中是否有一些問題可以處理故障而不是拋出故障?
最后,在仔細閱讀了Mocha文檔之后,我找到了解決方案。
在Mocha v3.0.0和更高版本中,返回Promise並調用done()將導致異常,因為通常這是一個錯誤:
const assert = require('assert');
it('should complete this test', function (done) {
return new Promise(function (resolve) {
assert.ok(true);
resolve();
})
.then(done);
});
我將測試用例更改為此,並成功了。
expect(result).to.be.rejected;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.