Javascript 需要帮助测试承诺后的零件吗
我正在尝试对我的节点应用程序进行单元测试,在我正在测试的方法中有一个承诺之后,我在测试该部分时遇到了挑战Javascript 需要帮助测试承诺后的零件吗,javascript,node.js,unit-testing,jestjs,Javascript,Node.js,Unit Testing,Jestjs,我正在尝试对我的节点应用程序进行单元测试,在我正在测试的方法中有一个承诺之后,我在测试该部分时遇到了挑战 //toBeTested.js const{fun1}=require(“./somejs”); const{fun2}=require(“./someotherjs”); const{fun3}=require(“./anotherjs”); exports.somefunction=({p1,p2,p3,p4})=>{ fun1(p1,p2)//fun1()返回一个承诺 .那么( 结果=
//toBeTested.js
const{fun1}=require(“./somejs”);
const{fun2}=require(“./someotherjs”);
const{fun3}=require(“./anotherjs”);
exports.somefunction=({p1,p2,p3,p4})=>{
fun1(p1,p2)//fun1()返回一个承诺
.那么(
结果=>{
fun2(fun3(结果)、p3、p4);
}
)
}
这是测试文件,fun2和fun3似乎由于某种原因没有被调用
//toBeTested.test.js
const{somefunction}=require(“./toBeTested.js”);
const{fun1}=require(“./somejs”);
const{fun2}=require(“./someotherjs”);
const{fun3}=require(“./anotherjs”);
jest.mock(“./somejs.js”,()=>{
返回{
fun1:jest.fn((p1,p2)=>{
返回承诺。解决(()=>{
});
})
}
});
jest.mock(“./someotherjs.js”,()=>{
返回{
fun2:jest.fn((p1,p2,p3)=>{})
}
});
jest.mock(“./anotherjs.js”,()=>{
返回{
fun3:jest.fn((p1)=>{
返回[];
})
};
});
常量mockObj={
p1:“p1”,
p2:“p2”,
p3:“p3”,
p4:“p4”
};
之后(()=>{
jest.resetAllMocks();
开玩笑。恢复记忆();
});
描述(“testtobetested.js”,()=>{
它(“somefunction()-success”,()=>{
somefunction(mockObj);
expect(fun1).tohavebeincalled();
期望(功能1)。与(mockObj.p1、mockObj.p2)一起被调用;
expect(fun3).tohavebeencall();//在此处失败
expect(fun2).tohavebeencall();//在这里也失败
});
})
多谢各位
注:对于jest和node js开发,我还是个初学者。问题是
fun3
和fun2
是异步调用的。您应该在fun1
解决以下问题后等待它们:
description(“testtobetested.js”,()=>{
它(“somefunction()-success”,异步()=>{
somefunction(mockObj);
期望(功能1)。与(mockObj.p1、mockObj.p2)一起被调用;
等待expect(fun1.mock.results[0])解析;
expect(fun3.tohavebeincall();
expect(fun2).tohavebeincall();
});
})
工具书类