我刚开始使用 nock 来拦截 http 调用。下面是我在导入所需模块后在单元测试用例中使用的代码。
it('testing superagent using nock..', function () {
let mockData = {
scope: this,
data: {"title":"test"},
callback: function (data){
//expecting {id:10} here.but nothing is coming
console.log(data)
},
errback: function(err) {console.log(err)}
};
nock('http://localhost').post('/api/1234').reply(200, {id: 10});
callFunction(actionFunction, mockData, this);
}
callFunction 将参数“actionFunction”、“mockData”发送到另一个类,其中 actionFucntion 接受 mockData 并使用 superagent 模块发出 ajax 请求。
import xhr from './xhr';
static actionFunction(mockData){
let xhr = mockData.xhr || xhr;
xhr.reqXhr({
method: :"POST",
url: mockData.url,
data: mockData.data,
callback: function(data) {mockData.callback.call(mockData.scope, data);},
errback: function(response) {mockData.errback.call(mockData.scope, response);}
})
}
//in xhr class I am triggering the actual ajax call using super agent
super-agent(method, url).send(reqdata).end((errror, response) => {
//sending response.body to call backs similar to below
request.callback.call(this, response.body);
}
现在的问题是虽然 nock 能够拦截 http 调用,但 nock 模拟响应({id:10})没有达到回调函数。我想在回调函数中显示这个响应
有什么可能的方法吗?