【发布时间】:2015-02-12 07:04:43
【问题描述】:
抱歉,如果这是一个简单的问题,我对 Node 和 Sinon 比较陌生。我正在努力弄清楚如何断言在 Nodejs 中调用了嵌套异步函数。
我正在使用 mocha、chai、sinon 和 request (https://github.com/request/request),但我认为我在存根部分缺少一些基本的东西。
my_app.js 中的示例 -
var request = require('request');
function MyModule() {
};
MyModule.prototype.getTicker = function(callback) {
request('http://example.com/api/ticker', function(error, response) {
if (error) {
callback(error);
} else {
callback(null, response);
}
});
};
exports.mymodule = new MyModule();
测试内部。我正在尝试终止对请求的调用并提供一些要返回的虚拟数据。但是我在创建存根的行上不断收到错误“未定义请求”。
var myApp = require('../my_app.js')
,assert = require("assert")
,chai = require('chai')
,sinon = require('sinon')
,expect = chai.expect;
describe('mymodule object', function() {
var mymodule = myApp.mymodule;
before(function(done) {
sinon.stub(request).yields(null, JSON.stringify({
price: '100 USD'
}));
done();
});
it('getTicker function should call request on example ticker', function(done) {
mymodule.getTicker(function(error, result){
request.called.should.be.equal(true);
done();
});
});
});
我知道我可以分配 sinon.stub(objname, "funcname") 或 sinon.stub("funcname"),但那些只设置外部对象,我试图存根函数内部的函数请求获取代码。
关于如何做到这一点的任何想法?也许我也需要使用间谍(但如何?)或者有更好的方法来测试上面的 getTicker 函数吗?
【问题讨论】:
标签: node.js request mocha.js sinon chai