Я видел документацию для mocks Jest, используя папку mocks, но я хочу, чтобы вы могли издеваться над модулем с одним макетом в одном тесте и издеваться над тем же модулем с другим макетом в другой тест.Несколько ручных Mocks модулей CommonJS с шумом
Например, с ReWire и жасмин, вы могли бы сделать что-то вроде этого:
//module2.js
module.exports = {
callFoo: function() {
require('moduleToMock').foo();
}
};
//module2Test.js
describe("test1", function() {
var mock;
beforeEach(function() {
var rewire = require('rewire');
mock = jasmine.createSpyObj('mock', ['foo']);
});
it("should be mocked with type1", function() {
mock.foo.and.returnValue("type1");
rewire('moduleToMock', mock);
var moduleUsingMockModule = require('module2');
expect(moduleUsingMockModule.callFoo()).toEqual("type1");
});
});
describe("test2", function() {
it("should be mocked with type2", function() {
mock.foo.and.returnValue("type2");
rewire('moduleToMock', mock);
var moduleUsingMockModule = require('module2');
expect(moduleUsingMockModule.callFoo()).toEqual("type2");
});
});
Возможно ли это сделать с Jest? Разница заключается в том, что я определяю макет внутри теста, а не в какой-то внешней папке, которая используется для всех тестов.
Обратите внимание, что шаблонный сильно уменьшаются с шуткой :) – ncuillery
Спасибо, это имеет большой смысл! –
Начиная с [Jest 15] (https://facebook.github.io/jest/blog/2016/09/01/jest-15.html#disabled-automocking), вам также необходимо явно высмеять модуль. Добавьте 'jest.mock ('moduleToMock') перед его применением. –