2016-08-21 2 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 как и ожидалось.

The 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([]); 
}); 

Но как я могу проверить, если утверждение не успешно? Тест может выглядеть примерно так:

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

Я составленный .fails(), чтобы продемонстрировать, что тест может выглядеть.

ответ

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); 
}); 
Смежные вопросы