0

我正在关注测试驱动的 Javascript 开发,并且刚刚完成了 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]”之类的消息,正如书中提到的那样,您应该收到.

4

1 回答 1

0

是的,当然可以。

至少有两种方式:

  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);
于 2014-02-03T12:06:45.513 回答