Nep*_*oxx 11 javascript node.js promise sinon bluebird
在我想测试的文件中,我有以下代码:
var httpGet = Promise.promisify(require("request").get);
httpGet(endpoint, {
auth: {bearer: req.body.access_token},
json: true
})
.then(...)
Run Code Online (Sandbox Code Playgroud)
现在,在我的测试中,我想确保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);
//...
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,当request.get被宣传时,这不再有效.我尝试了stubing request.getAsync(因为bluebird将"Async"附加到promisified函数),但这也不起作用.有任何想法吗?
Promise.promisify不会修改对象,它只接受一个函数并返回一个新函数,完全不知道该函数甚至属于"request"
。
"Async"
使用promisify All时,将后缀方法添加到对象
Promise.promisifyAll(require("request"));
request.getAsync = sinon.stub()
.yields(null, null, {error: "test error", error_description: "fake google error."});
expect(request.getAsync).to.have.been.calledOnce();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3964 次 |
最近记录: |