启用JsTestDriver失败的测试消息并修复FailureException错误?

时间:2013-07-29 18:54:49

标签: javascript exception tdd js-test-driver

我正在跟随Test Driven Javascript Development跟随finshed设置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]”的消息,正如本书所提到的那样你应该收到。

1 个答案:

答案 0 :(得分:0)

是的,确定有可能。

至少有两种方式:

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

    例如:

    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);