Я видел документацию для макетов Jest, используя папку mocks, но я хочу иметь возможность имитировать модуль с одним макетом в одном тесте и имитировать тот же модуль с другим макетом в другом тесте.
Например, с rewire и jasmine вы могли бы сделать что-то вроде этого:
//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? Разница в том, что я определяю макет внутри теста, а не в какой-то внешней папке, которая используется для всех тестов.