我有一个功能:
// helper.js
export const someFunction = (complexObj1, complexObj2) => {
const someObj = complexObj1.generateAnObject();
const objList = someObj.generateListOfObjects();
for (const obj of objList) {
obj.performAction();
}
};
如您所见,它几乎是一个执行一系列任务的void函数。 “ complexObj1”和“ complexObj2”对象及其附加的功能全部由我使用的API生成。
我要测试的东西:
测试这样的函数的正确方法是什么?我已经研究过Jest嘲笑,但是不确定是否适合我的情况。
test("Test someFunction", () => {
// not sure what to do here or what to mock etc
});
我不能测试这样的功能吗?
如果有人能给我一个如何测试的例子,或者只是指出正确的方向,我将不胜感激。我真的很想学习如何做到这一点。
答案 0 :(得分:1)
函数看起来像接受一个对象,对该对象调用一个函数以生成另一个对象,对该对象调用一个函数以生成一个数组,然后对该数组中的每个对象调用一个函数。
由于它仅知道传递给它的内容,因此您可以传递适当的模拟数据并使用mock functions来确认其正常工作:
const someFunction = (complexObj1) => {
const someObj = complexObj1.generateAnObject();
const objList = someObj.generateListOfObjects();
for (const obj of objList) {
obj.performAction();
}
};
test('someFunction', () => {
const objList = [
{ performAction: jest.fn() },
{ performAction: jest.fn() }
];
const obj = {
generateAnObject: () => ({
generateListOfObjects: () => objList
})
};
someFunction(obj);
expect(objList[0].performAction).toHaveBeenCalled(); // Success!
expect(objList[1].performAction).toHaveBeenCalled(); // Success!
})