使用 mocha 和 chai 自动控制 return 并且最后一行不在单元测试用例中执行
control return automatically and last line not executing in unit test case using mocha and chai
我是 node.js 中使用 mocha 和 chai 进行单元测试的新手。
我卡在了control return自动不执行的问题
chai.expect(123).to.be.a("字符串");
代码在这里
it.only("should fetch status",()=>{
return chai.request(server)
.get("/user/status")
.then((result)=>{
let data = result.body;
console.log("till here execute");
//this line is not executed and test case is passed even when the below line expect to fail the test
chai.expect(123).to.be.a("string");
})
.catch(err=>err);
});
控制台显示上面的测试用例通过了我不知道如何以及为什么
chai.expect(123).to.be.a("string");
没有执行
这与您的catch
有关。
基本上,当您的 chai.expect
失败时,它会抛出一个 AssertionError
。
在您给定的代码中,您正在返回捕获错误,而不是抛出它。
根据chai.js官方文档,在https://www.chaijs.com/plugins/chai-http/中发现,在处理promises时,catch
里面必须throw
捕获错误。
这样,改变:
.catch(err=>err);
至:
.catch(err => {throw err});
我是 node.js 中使用 mocha 和 chai 进行单元测试的新手。 我卡在了control return自动不执行的问题 chai.expect(123).to.be.a("字符串");
代码在这里
it.only("should fetch status",()=>{
return chai.request(server)
.get("/user/status")
.then((result)=>{
let data = result.body;
console.log("till here execute");
//this line is not executed and test case is passed even when the below line expect to fail the test
chai.expect(123).to.be.a("string");
})
.catch(err=>err);
});
控制台显示上面的测试用例通过了我不知道如何以及为什么
chai.expect(123).to.be.a("string");
没有执行
这与您的catch
有关。
基本上,当您的 chai.expect
失败时,它会抛出一个 AssertionError
。
在您给定的代码中,您正在返回捕获错误,而不是抛出它。
根据chai.js官方文档,在https://www.chaijs.com/plugins/chai-http/中发现,在处理promises时,catch
里面必须throw
捕获错误。
这样,改变:
.catch(err=>err);
至:
.catch(err => {throw err});