【发布时间】:2018-01-24 20:43:21
【问题描述】:
我试图模拟这个邮件功能,所以我每次测试我的代码时都不会发送邮件。但是嘲弄是行不通的。这段代码给了我错误:mockImplementation is not a function。
是调用 sendUserInvitationMail() 的 add 函数。邮件模块导出如下所示:
module.exports = {
sendUserInvitationMail,
};
这是测试代码:
require('dotenv').config();
const { startWithCleanDb } = require('../../../utils/test.helpers');
const { add } = require('../invitation.service');
const { ADMIN_LEVELS, TABLES } = require('../../../constants');
const { AuthorizationError } = require('../../../errors');
const knex = require('../../../../db/connection');
const mailer = require('../../../mailer/index');
jest.mock('../../../mailer/index');
beforeEach(() => startWithCleanDb());
mailer.sendUserInvitationMail.mockImplementation(() => console.log('Mocked mail function called'));
mailer.sendUserInvitationMail();
describe('invitation.service', () => {
describe('add', () => {
it('adds an invitation to the db', async () => {
expect.assertions(2);
const result = await add(
{
email: 'tester@test.be',
badgeNumber: '344d33843',
},
{ currentZoneId: 1 },
ADMIN_LEVELS.ADMINISTRATOR,
);
const invitation = (await knex.select('*').from(TABLES.INVITATIONS))[0];
expect(invitation.id).toEqual(result.id);
expect(invitation.email).toEqual(result.email);
});
});
});
【问题讨论】:
标签: unit-testing jestjs