gpt4 book ai didi

node.js - Mocha 并非永远不会调用“then”函数进行断言检查

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:33 25 4
gpt4 key购买 nike

我在 Mocha 中编写了以下测试用例,其中我的代码使用 Q 模块。

var expect = require("chai").expect;
var utils = require("../Utils.js");
var utils1 = require("../a.js");
var sinon = require('sinon');
var request = require('requestretry');
var querySys = require('../b.js');
var Q = require("q");

describe("Sample", function () {
var results;
describe("#get()", function () {
before(function (done) {
done();
});
it("equal", function () {
var deferred = Q.defer();
var responseData = {};
responseData.code = 200;
responseData.data = [{a:1,b:2}];
deferred.resolve(responseData);
//querySys1 method uses Q promises. That is how I stubbed the response.
sinon.stub(querySys, 'querySys1').returns(deferred.promise);

//get function internally calls querySys1. Hence I have stubbed that.
results = utils1.get(specification);
results.then(function (data) {
//Here I do see data coming as {in:1, out:1}. But still the test case is passing when compare it with {}.
console.log(data);
//Ideally, it should have failed. But it is passing.
expect(data).to.be.equal({});
});
});
after(function (done) {
done();
})
});
});

所以,如果你看到的话,我正在尝试在 results.then 部分中进行断言检查。我已经打印了我收到的回复。这正如预期的那样。 但我故意尝试匹配错误的值,但测试用例仍然通过。

最佳答案

由于您的测试不包含回调,因此执行将通过主 block 运行并声明测试已通过,而无需等待 then 函数的结果。您需要让 mocha 知道等待回调:

it("equal", function (done) {
...
results.then(function (data) {
console.log(data);
expect(data).to.be.equal({});
return done();
});
});

关于node.js - Mocha 并非永远不会调用“then”函数进行断言检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28082761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com