assert.pushResult()

添加版本:1.22.0.

描述

pushResult( data )

报告自定义断言的结果。

名称 描述
data.result (布尔值) 断言的结果
data.actual 正在测试的表达式
data.expected 已知的比较值
data.message (字符串或未定义) 断言的简短描述

示例

如果您需要表达一个没有被 QUnit 内置断言抽象的期望,您可以在表达式中执行自己的逻辑,然后将两个可以直接比较的值传递给 assert.strictEqual(),或者将您自己的代表性布尔值结果传递给 assert.true()

QUnit.test('bad example of remainder', assert => {
  const result = 4;
  const actual = (result % 3) === 2;
  assert.true(actual, 'remainder');
  // In case of failure:
  // > Actual: false
  // > Expected: true
  //
  // No mention of the actual remainder.
  // No mention of the expected value.
});

QUnit.test('good example of remainder', assert => {
  const result = 4;
  assert.strictEqual(result % 3, 2, 'remainder');
  // In case of failure:
  // > Actual: 1
  // > Expected: 2
});

QUnit.test('bad example of between', assert => {
  const actual = 3;
  const isBetween = (actual >= 1 && actual <= 10);
  assert.true(isBetween, 'result between 1 and 10');
  // In case of failure:
  // > Actual: false
  // > Expected: true
  //
  // No mention of the actual remainder.
  // No mention of the expected value.
  // Cannot be expressed in a useful way with strictEqual()
});

自定义断言

使用自定义断言方法,您可以控制断言的评估方式,与在失败情况下如何描述其实际值和预期值分开。

例如

QUnit.assert.between = function (actual, from, to, message) {
  const isBetween = (actual >= from && actual <= to);

  this.pushResult({
    result: isBetween,
    actual: actual,
    expected: `between ${from} and ${to} inclusive`,
    message: message
  });
};

QUnit.test('custom assertion example', assert => {
  const result = 3;
  assert.between(result, 1, 10, 'result');
  // Example of failure if result is out of range
  // > actual: 42
  // > expected: between 1 and 10
});