存根未被调用
Stub not being called
我对我的一个控制器进行了单元测试,它具有查找数据(续集)并将结果作为 json 添加到响应对象的单一功能。
我有两个存根,一个叫做另一个不是。
控制器
exports.findAll = (req, res) => {
Idea.findAll().then(ideas => {
console.log(ideas);
return res.json(ideas);
}).catch(err => {
console.log(err);
});
};
控制器测试
const chai = require('chai');
const {match, stub, resetHistory, spy} = require('sinon');
const proxyquire = require('proxyquire');
var sinonChai = require("sinon-chai");
chai.should();
chai.use(sinonChai);
const {makeMockModels} = require('sequelize-test-helpers');
describe('Idea Controller', function () {
const data = {
id: 1,
title: 'Stubbed Title',
text: 'Stubbed text'
};
describe('findAll()', function () {
it('Success case ', function () {
const mockResponse = () => {
const res = {};
res.json = stub().returns(res);
return res;
};
let res = mockResponse();
const Idea = {findAll: stub()};
const mockModels = makeMockModels({Idea});
Idea.findAll.resolves(data);
const ideaController = proxyquire('../../src/controllers/IdeaController', {
'../models': mockModels
});
ideaController.findAll({}, res);
Idea.findAll.should.have.been.called; // passes
res.json.should.have.been.called; //fails
});
})
});
由于 findAll
是异步函数,您应该将断言移到 .then
.
中
我对我的一个控制器进行了单元测试,它具有查找数据(续集)并将结果作为 json 添加到响应对象的单一功能。
我有两个存根,一个叫做另一个不是。
控制器
exports.findAll = (req, res) => {
Idea.findAll().then(ideas => {
console.log(ideas);
return res.json(ideas);
}).catch(err => {
console.log(err);
});
};
控制器测试
const chai = require('chai');
const {match, stub, resetHistory, spy} = require('sinon');
const proxyquire = require('proxyquire');
var sinonChai = require("sinon-chai");
chai.should();
chai.use(sinonChai);
const {makeMockModels} = require('sequelize-test-helpers');
describe('Idea Controller', function () {
const data = {
id: 1,
title: 'Stubbed Title',
text: 'Stubbed text'
};
describe('findAll()', function () {
it('Success case ', function () {
const mockResponse = () => {
const res = {};
res.json = stub().returns(res);
return res;
};
let res = mockResponse();
const Idea = {findAll: stub()};
const mockModels = makeMockModels({Idea});
Idea.findAll.resolves(data);
const ideaController = proxyquire('../../src/controllers/IdeaController', {
'../models': mockModels
});
ideaController.findAll({}, res);
Idea.findAll.should.have.been.called; // passes
res.json.should.have.been.called; //fails
});
})
});
由于 findAll
是异步函数,您应该将断言移到 .then
.