【问题标题】:Using Qunit to test a returned function使用 Qunit 测试返回的函数
【发布时间】:2011-10-12 15:23:03
【问题描述】:

我目前正在学习单元测试以及如何使用 QUnit,并认为最好的方法是使用我编写的一个小型 jQuery 插件。

在插件中,我使用缓动插件中的方程式扩展了缓动对象,如下所示:

$.extend( $.easing, {

    'ease-in': function (x, t, b, c, d) {
      return c*(t/=d)*t*t + b;
    },
    'ease-out': function (x, t, b, c, d) {
      return c*((t=t/d-1)*t*t + 1) + b;
    },
});

现在我尝试在 QUnit 测试中使用它:

equal(jQuery.easing['ease-in'],
      function (x, t, b, c, d) {return c*(t/=d)*t*t + b;},
      'ease-in returns correct function');

它失败了...我是错过了什么还是我在某处弄错了?

【问题讨论】:

  • 那是因为函数是一个对象,对象与引用相等,而不是值。 (function() {}) !== (function() {}).

标签: javascript jquery unit-testing jquery-plugins qunit


【解决方案1】:

单元测试(通常)不是这样完成的——没有理由测试一个方法的代码是否等于测试代码(你知道它确实如此!)。单元测试的目的是确保 结果 是相等的。该方法如何计算结果并不重要。

所以,您的测试应该如下所示:

var easeIn = jQuery.easing['ease-in'];
equal(
    easeIn( 1, 2, 3, 4, 5 ),
    123  // or whatever the result should be
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2016-12-26
    相关资源
    最近更新 更多