2011-10-12 81 views
2

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

在该插件在我从一个宽松的插件扩展使用方程宽松的物体,像这样:

$.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'); 

和它失败了......我是否错过了某些东西,或者我在某个地方得到了错误的结尾?

+2

这是因为一个函数是一个对象,对象和参考,不等于价值。 '(function(){})!==(function(){})''。 – pimvdb

回答

2

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

所以,你的试验应是这个样子:

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