У меня возникла проблема:
1.) Настройка копирует в beforeEach
2.) Попробуйте изменить некоторые фиктивные поведения в отдельных тестах, где они должны быть более уникальными
3.) Я не могу изменить значения, установленные в # 1
Это частично псевдокод, поэтому синтаксис может быть отключен, поскольку у меня нет исходного кода передо мной:
import Module from '../module';
...
jest.mock('../module');
describe('test suite', {
let mockFn = undefined;
beforeEach(() => {
mockFn = jest.fn(() => 'banana');
Module.function = mockFn;
});
test('happy test', () => {
// this test needs Module.function to return 'banana', so it doesn't
// have any issues, as calls to Module.function return 'banana'
});
test('test with issue', () => {
let mockFn2 = jest.fn(() => 'new value to return instead of banana');
Module.function = mockFn2;
//execute code
//calls to Module.function still return 'banana'
});
}
Я пробовал некоторые вещи, такие как добавление функции afterEach, которая вызывает mockFn.mockClear (). Я не смог переопределить оригинальную макетную функцию. Для большинства моих тестов оригинальные макеты хороши, потому что я хочу значение по умолчанию, но в некоторых моих тестах мне нужно убедиться, что код реагирует определенным образом, когда эти функции возвращают определенные значения, но я не могу изменить его из того, что я назначил в качестве первой фиктивной функции.
Редактировать - вот как это используется:
function() {
...
if(Module.function().includes('somevalue'){
//Do something
}
else {
fetch(Module.function() + other stuff... )
...
}
};
Вот как это определяется:
export default class Module {
public static function() {
...
}
}
Спасибо.