2016-08-21 7 views
1

私がQUnit用に作成したカスタムアサーションをテストしたいと思います。 QUnit home pageには、test its own assertionsと書かれていますが、そのアサーションをテストする方法だけが示されています。つまり、アサーションが失敗する条件をテストするようには見えません。キャプチャの失敗を並べ替える方法はありますか?それが合格のテストになりますか?QUnitでカスタムアサーションをテストする方法

は私がthis custom assertionをテストしたいと言う:

QUnit.assert.mod2 = function(value, expected, message) { 
    var actual = value % 2; 
    this.pushResult({ 
     result: actual === expected, 
     actual: actual, 
     expected: expected, 
     message: message 
    }); 
}; 

上記主張はそうのように使用されることがあります。

QUnit.test("mod2", function(assert) { 
    assert.mod2(2, 0, "2 % 2 == 0"); 
    assert.mod2(3, 1, "3 % 2 == 1"); 
}); 

だから私はMOD2のテスト作品ということを主張するためにテストを書きたいと思います予想通り。

tests for QUnit assertionsが期待されるとき.ok()アサーションが通ることをテストし、次があります。

QUnit.test("ok", function(assert) { 
    assert.ok(true); 
    assert.ok(1); 
    assert.ok("1"); 
    assert.ok(Infinity); 
    assert.ok({}); 
    assert.ok([]); 
}); 

をしかし、アサーションが正常に失敗したときにどのように私はテストのでしょうか?私はテストがどのように見えるかを実証する.fails()を作っている

QUnit.test("test assert.mod2", function(assert) { 
    assert.mod2(2, 0, "2 % 2 == 0"); 
    assert.fails (assert.mod2(2, 1, "2 % 2 == 0")); 
    assert.mod2(3, 1, "3 % 2 == 1"); 
    assert.fails (assert.mod2(3, 0, "3 % 2 == 1")); 
}); 

:テストは、次のようになります。

答えて

1

それはsource codeごとに、そのように行うことができます。

QUnit.module("failing assertions", { 
    beforeEach: function(assert) { 
     var originalPushResult = assert.pushResult; 
     assert.pushResult = function(resultInfo) { 

      // Inverts the result so we can test failing assertions 
      resultInfo.result = !resultInfo.result; 
      originalPushResult(resultInfo); 
     }; 
    } 
}); 

QUnit.test("ok", function(assert) { 
    assert.ok(false); 
    assert.ok(0); 
    assert.ok(""); 
    assert.ok(null); 
    assert.ok(undefined); 
    assert.ok(NaN); 
}); 
関連する問題