Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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 Chai/Expect-开发时如何工作?从expect().to.throw到记录错误似乎真的很难_Javascript_Unit Testing_Mocha.js_Chai - Fatal编程技术网

Javascript Chai/Expect-开发时如何工作?从expect().to.throw到记录错误似乎真的很难

Javascript Chai/Expect-开发时如何工作?从expect().to.throw到记录错误似乎真的很难,javascript,unit-testing,mocha.js,chai,Javascript,Unit Testing,Mocha.js,Chai,我有这个密码 expect(function() { //some error }).to.throw(Error); 如何在测试中轻松地从这里记录错误 我真的必须键入try/catch和console.log吗?这是否违背了我最终需要移除它们才能通过测试的事实?柴。toThrow matcher可用于以下方式: 检查特定实例的错误抛出 expect(function() { throw SyntaxError('sample error message'); }).to.throw

我有这个密码

expect(function() {
   //some error
}).to.throw(Error);
如何在测试中轻松地从这里记录错误

我真的必须键入try/catch和console.log吗?这是否违背了我最终需要移除它们才能通过测试的事实?

柴。toThrow matcher可用于以下方式:

检查特定实例的错误抛出

expect(function() {
  throw SyntaxError('sample error message');
}).to.throw(SyntaxError);
检查错误消息的文本

expect(function() {
  throw SyntaxError('sample error message');
}).to.throw(/sample error message/);
如果这不适合您的用例,您可以始终尝试/捕获并检查/对捕获到的错误的对象进行断言:

try {
  throw SyntaxError('sample error message');
} catch(e) {
  expect(e.message).to.equal('sample error message');
}

是的,不要解释我自己会投反对票,但既然别人已经解释过,也没有解释过,我就给你我的两分钱。当您编写一个期望抛出错误的测试时,这是因为您正在测试的场景实际上抛出了一个错误。另一方面,如果被测单元捕捉到错误并将某些内容记录到控制台,那么您应该针对该场景进行测试。我们的想法是,命中测试应该检查代码的结果行为,在特定的情况下,这种行为可能是什么。人们在开发测试时不调整代码吗?例如,在上面的错误中,它需要一个特定的错误类型,但没有得到它。只是想记录expect获得的值。如果代码未按预期工作,请确定。你能把你要测试的代码和实际测试一起发布吗?在您正在测试的特定场景中,代码应该做什么?如果它被允许抛出一个错误,那么你需要测试它。如果它应该登录到控制台,那么您需要进行测试。如果你的测试从一开始就写得很好,那么如果你的代码按预期执行,它们就会通过,否则就会失败。。。这不是发展问题,而是发展过程问题。问题是如何从expect获取错误值。如果我说expect.to.throw,我如何引用错误本身呢?很遗憾,如果不添加try/catch,就无法从测试错误到获取错误实例。仅仅因为Chai现在没有匹配器,并不意味着我们无法创建它们。柴是可扩展的。如果我真的知道你的意图,我可以开发一个带有匹配器的Chai插件,为你的用例服务。不幸的是,您的问题太模糊和晦涩了,到目前为止,我仍然不知道您的具体需求/用例是什么。