Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要帮助测试承诺后的零件吗_Javascript_Node.js_Unit Testing_Jestjs - Fatal编程技术网

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();
});
})
工具书类