Вот решение для модульного тестирования:
controller.js
:
const User = require('./user');
module.exports = {
register: async function(req, res) {
var record = await User.create({
username: 'kevin chuka',
});
return record;
},
};
user.js
:
class User {
static async create() {
return 'real user';
}
}
module.exports = User;
controller.test.js
:
const sinon = require('sinon');
const User = require('./user');
const controller = require('./controller');
const { expect } = require('chai');
describe('60220190', () => {
it('should create and return user', async () => {
sinon.stub(User, 'create').resolves(true);
const actual = await controller.register();
expect(actual).to.be.eq(true);
sinon.assert.calledWithExactly(User.create, { username: 'kevin chuka' });
});
});
Результаты модульных испытаний с отчетом о покрытии:
60220190
✓ should create and return user
1 passing (29ms)
---------------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
---------------|---------|----------|---------|---------|-------------------
All files | 83.33 | 100 | 50 | 83.33 |
controller.js | 100 | 100 | 100 | 100 |
user.js | 50 | 100 | 0 | 50 | 3
---------------|---------|----------|---------|---------|-------------------