【发布时间】:2018-11-15 21:42:50
【问题描述】:
我对调用类的函数的单元测试有疑问。似乎总是调用“官方”类实例而不是我的模拟类。我无法强制我的函数使用我的模拟实例......
有一个文件包含我要测试的功能:
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;
}
}
有一个spec文件:
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...Mocking 失败。”
所以我想通过模拟 myMethod 返回 false 来让我的测试总是失败。
你能帮帮我吗?感谢您的宝贵时间。
【问题讨论】:
标签: javascript node.js unit-testing jestjs