Node.js 使用jest模拟库中的回调
我试图使用Jest测试一个调用fbgraph库的函数。由于访问令牌每次都会更改,我想在fbgraph中模拟该函数。但是,我的测试从未完成,因为它在等待模拟函数中的回调时超时 如何为下面的模块编写模拟fbgraph调用的测试?(我编辑了字符串“Success”的返回值)以简化示例 正在测试的功能:Node.js 使用jest模拟库中的回调,node.js,testing,mocking,jestjs,Node.js,Testing,Mocking,Jestjs,我试图使用Jest测试一个调用fbgraph库的函数。由于访问令牌每次都会更改,我想在fbgraph中模拟该函数。但是,我的测试从未完成,因为它在等待模拟函数中的回调时超时 如何为下面的模块编写模拟fbgraph调用的测试?(我编辑了字符串“Success”的返回值)以简化示例 正在测试的功能: class Users { save(accessToken, callback) { var graph = require('fbgraph'); gr
class Users {
save(accessToken, callback) {
var graph = require('fbgraph');
graph.setAccessToken(accessToken);
graph.get("me?fields=email", function(err, res) {
callback(null,"Success");
});
}
}
module.exports = Users;
测试模块:
const Users = require('../models/users');
jest.mock('fbgraph');
let users = new Users();
test('If an access token is passed, user.save should return success', done => {
function callback(err, data) {
expect(data).toBe('Success');
done();
}
users.save('test', callback);
});
然后我嘲弄了这个世界
const fbgraph = jest.genMockFromModule('fbgraph');
function get(querystring,callback)
{
return callback(null,'Success');
}
module.exports = fbgraph;
我只会嘲笑测试中的东西:
var graph = require('fbgraph');
const Users = require('../models/users');
jest.mock('fbgraph', ()=>({
setAccessToken: jest.fn(),
get: (url, fn) => fn()
}));
let users = new Users();
test('If an access token is passed, user.save should return success', () => {
const callback = jest.fn()
users.save('test', callback);
expect(callback).toHaveBeenCalledWith('Success')
expect(graph.setAccessToken).toHaveBeenCalledWith('test')
});