我一直在尝试编写一个处理错误的函数文本,如果它是有效错误,则抛出该错误,但如果不是,则不会抛出任何内容。问题是我在使用时似乎无法设置参数:
expect(handleError).to.throw(Error);
理想的情况是使用:
expect(handleError(validError)).to.throw(Error);
有什么办法可以实现这个功能吗?
函数代码:
function handleError (err) {
if (err !== true) {
switch (err) {
case xxx:
...
}
throw "stop js execution";
else {}
}
以及测试代码(未按预期工作):
it("should stop Javascript execution if the parameter isnt \"true\"", function() {
expect(handleError).to.be.a("function");
expect(handleError(true)).to.not.throw(Error);
expect(handleError("anything else")).to.throw(Error);
});
问题是您正在调用handleError,然后将结果传递给expect。如果handleError抛出,那么expect甚至不会被调用。
您需要推迟调用handleError直到调用expect,以便expect可以看到调用函数时发生了什么。幸运的是,这正是expect想要的:
expect(function () { handleError(true); }).to.not.throw();
expect(function () { handleError("anything else") }).to.throw("stop js execution");
如果您阅读了文档 http://chaijs.com/api/bdd/对于 throw,您将看到关联的期望应该传递一个函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)