Я пытаюсь написать модульный тест с заглушками sinon для slack-notify.
const sinon = require( 'sinon' );
const { expect } = require( 'chai' );
const slackObj = require( 'slack-notify' )( '' );
const slackNotifcation = require( './slackNotificationUtil' );
describe( 'Slack notification', () => {
let logStub;
let slackStub;
before(() => {
process.env.NODE_ENV = 'unittest';
slackStub = sinon.stub( slackObj, 'send' ).returns(() => {});
});
after(() => {
logStub.restore(); // Unwraps the spy
slackStub.restore();
delete process.env.NODE_ENV;
});
it( 'can send notifications', ( done ) => {
slackNotifcation.sendSlackNotification( 'SOME MESSAGE' ).then(( response ) => {
// eslint-disable-next-line no-unused-expressions
expect( response ).to.be.true;
done();
});
}).timeout( 10000 );
});
Но метод send
, о котором я говорю, не работает. Когда я запускаю тест, все еще работает оригинальный метод отправки slack-notify.
Что я делаю не так при работе с заглушкой?
вот фактический метод, который я написал:
const slackObj = require( 'slack-notify' );
const config = require( './../../config/' );
exports.sendSlackNotification = message => new Promise(( resolve, reject ) => {
if ( process.env.NODE_ENV !== 'dev' ) {
const options = {};
Object.assign( options, config.slack );
options.text = message;
slackObj( options.url ).send( options, ( err ) => {
if ( err ) {
reject( false );
}
resolve( true );
});
} else {
resolve( true );
}
});