У меня проблема с модульным тестом функции, которая вызывает класс.Кажется, всегда называют «официальный» экземпляр класса, а не мой издевательский класс.Я не могу заставить мою функцию использовать мой смоделированный экземпляр ...
Есть файл с функцией, которую я хочу проверить:
const myClass = require('./myClass');
const instance = new myClass();
module.exports.functionToTest = async function () {
// Some stuff...
const value = await instance.myMethod();
// Some stuff that define a result variable (partially with value).
return result;
}
Есть файл с моимопределение класса:
module.exports = class myClass {
async myMethod() {
const result = await someStuffWillResolveMaybeTrueOrFalse();
console.log('We used the original myMethod... Mocking has failed.');
return result;
}
}
Существует файл спецификации:
const myFile = require('./myFile');
const myClass = require('./myClass');
describe('My test', async () => {
it('should mock myClass.myMethod in order to return false', () => {
const instance = new myClass();
instance.myMethod = jest.fn().mockResolvedValue(false);
const result = await myFile.functionToTest();
expect(result).toBeTruthy();
}
}
К сожалению, мой тест проходит (потому что myMethod возвращает "true") и записывает "Мы использовали оригинальный myMethod ..Пересмешка не удалась. "
Поэтому я хочу, чтобы мой тест всегда проваливался, насмехаясь над тем, чтобы myMethod возвращал false.
Вы можете мне помочь?Спасибо за ваше время.