【问题标题】:Enable JsTestDriver Failed Test Messages and fix FailureException error?启用 JsTestDriver 失败的测试消息并修复 FailureException 错误?
【发布时间】:2013-07-29 18:54:49
【问题描述】:

我正在关注Test Driven Javascript Development,刚刚完成了 jstestdriver 的设置。在运行失败的测试时,我收到奇怪的错误和失败的测试消息,例如:

TestCase("ArrayTest", {
  "test array splice should not modify array": function () {
    var arr = [1, 2, 3, 4, 5];
    var result = arr.splice(2, 3);
    assertEquals([1, 2, 3, 4, 5], arr);
  }
});

我的失败测试输出相当简洁,包括一个奇怪的 FailureException 错误:

F
Total 1 tests (Passed: 0; Fails: 1; Errors: 0) (3.00 ms)
  Chrome 27.0.1453.116 Mac OS: Run 1 tests (Passed: 0; Fails: 1; Errors 0) (3.00 ms)
    ArrayTest.test array splice should not modify array failed (3.00 ms):

null
com.google.jstestdriver.FailureException
    at com.google.jstestdriver.FailureCheckerAction.run(Unknown Source)
    at com.google.jstestdriver.ActionRunner.runActions(Unknown Source)
    at com.google.jstestdriver.JsTestDriverServer.main(Unknown Source)

我想知道是否有可能修复该失败异常,并且还收到诸如“预期 [1, 2, 3, 4, 5] 但原为 [1, 2]” 的消息,正如书中提到的那样你应该收到。

【问题讨论】:

    标签: javascript exception tdd js-test-driver


    【解决方案1】:

    是的,当然可以。

    至少有两种方式:

    1. 为数组编写自己的比较器函数
    2. 将两个数组都转换为字符串,并将它们作为字符串与 assertEquals 进行比较

    例如:

    assertEquals([1, 2, 3, 4, 5] + "", arr + "");
    

    要修复失败的测试,您需要使用 slice 而不是 splice

    所以测试的代码如下:

    var arr = [1, 2, 3, 4, 5];
    var result = arr.slice(2, 3);
    assertEquals([1, 2, 3, 4, 5], arr);
    

    如果您想在此断言失败时获得一些自定义消息,您可以将其写为第一个参数:

    assertEquals("message text", [1, 2, 3, 4, 5], arr);
    

    【讨论】:

    • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
    • 拜托,如果我错了,你能纠正我吗: 问:我想知道是否有可能修复那个失败异常。 A:是的,当然可以。我应该提供一些代码示例吗?
    猜你喜欢
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    相关资源
    最近更新 更多