簡體   English   中英

啟用JsTestDriver失敗的測試消息並修復FailureException錯誤?

[英]Enable JsTestDriver Failed Test Messages and fix FailureException error?

我將跟隨“ 測試驅動的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]”,正如書中提到的那樣,您應該收到。

是的,肯定有可能。

至少有兩種方法:

  1. 為數組編寫自己的比較器函數
  2. 將兩個數組都轉換為字符串,並使用assertEquals將它們作為字符串進行比較

例如:

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

要修復失敗的測試,您需要使用切片而不是拼接

因此,測試代碼如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM