Javascript 使用jquery promise测试代码时出现Mocha测试错误

Javascript 使用jquery promise测试代码时出现Mocha测试错误,javascript,tdd,mocha.js,chai,Javascript,Tdd,Mocha.js,Chai,我正在尝试测试以下代码。服务器基本上拒绝了这个请求,因为一些参数并没有按照api规范的要求发送。 Api.createRecord在引擎盖下使用jquery.ajax,调用时返回jquery承诺 describe("Creating test record with incorrect data", ()=> { const params = {tId:"12323","col":"colValue"}; it('Should not create new rec

我正在尝试测试以下代码。服务器基本上拒绝了这个请求,因为一些参数并没有按照api规范的要求发送。
Api.createRecord
在引擎盖下使用
jquery.ajax
,调用时返回
jquery
承诺

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及更新版本中,返回承诺并调用done()将 导致异常,因为这通常是一个错误:

我把我的测试用例改成了这个,它成功了

expect(result).to.be.rejected;
expect(result).to.be.rejected;