为什么我在使用QUnit编写测试时会使用expect()?

时间:2013-02-21 01:38:34

标签: javascript qunit

我最近开始使用QUnit对我的JavaScript进行单元测试,我对文档中的一项功能感到有些困惑:expect()

根据文档,expect()旨在:

  

[s]指出在测试中预计会运行多少个断言。

以下是他们给出的例子:

test( "a test", function() {
  expect( 2 );

  function calc( x, operation ) {
    return operation( x );
  }

  var result = calc( 2, function( x ) {
    ok( true, "calc() calls operation function" );
    return x * x;
  });

  equal( result, 4, "2 square equals 4" );
});

我唯一看到的是维护噩梦。每次向测试添加断言时,都必须更新该编号,否则测试将失败。这种功能是否有实际应用?

2 个答案:

答案 0 :(得分:10)

  

我唯一看到的是维护噩梦......这种功能是否有实际应用?

嗯,我认为expect的意思是使用分组有意义的任务。它对测试事件或回调非常有用,例如:

test('trigger an event', function() {
  expect(1);

  $('div')
    .on('click', function() { ok(1) });
    .trigger('click');
});

如果你将有意义的任务分组在小测试中,预计只有2或3个断言,那么这不会成为一场噩梦。

答案 1 :(得分:3)

它可以用作安全措施,以确保您没有以某种方式编写无法运行的测试。如果你养成了编写预期数量的测试的习惯,你是否应该以某种方式编写一个测试套件,其中一个测试由于某种原因隐藏在QUnit中,QUnit会在你做之前选择它。