#typescript #react-native #redux #jestjs #enzyme
#typescript #react-native #сокращение #jestjs #фермент
Вопрос:
Ситуация, с которой у меня возникла проблема, заключается в следующем:
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() {
...
}
}
Спасибо.
Комментарии:
1. Это зависит от того, как
Module
импортируется и используется в тестируемом коде, можете ли вы обновить вопрос с помощью тестируемого кода?2. @brian-lives-outdoors нет, я не могу опубликовать исходный код. Я обновлю OP псевдокодом того, как он используется.
Ответ №1:
Я, наконец, понял это. Не очень интересное решение. Я только что понял, что применил всю логику для изменения макетов … после вызова тестируемой функции. Упс. Я думаю, что потратил два часа, пробуя разные способы сброса макетов, не осознавая этого…