【发布时间】:2015-03-30 01:23:05
【问题描述】:
在我要测试的文件中,我有以下代码:
var httpGet = Promise.promisify(require("request").get);
httpGet(endpoint, {
auth: {bearer: req.body.access_token},
json: true
})
.then(...)
现在,在我的测试中,我想确保 httpGet 被调用一次,并确保参数有效。在被承诺之前,我的测试是这样的:
beforeEach(function () {
request.get = sinon.stub()
.yields(null, null, {error: "test error", error_description: "fake google error."});
});
afterEach(function () {
expect(request.get).to.have.been.calledOnce();
var requestArgs = request.get.args[0];
var uri = requestArgs[0];
expect(uri).to.equal(endpoint);
//...
});
不幸的是,当 request.get 被承诺时,这不再有效。我尝试使用存根 request.getAsync 代替(因为 bluebird 将“Async”附加到 promisified 函数),但这也不起作用。有什么想法吗?
【问题讨论】:
标签: javascript node.js promise sinon bluebird