我是JavaScript的新手。想象一下,我有以下代码:
$(document).ready(function() {
$('#nights').on('keyup', function() {
var nights = +$(this).val();
var dailyPrice = +$(this).closest(".tour").data("daily-price");
$('#total').text(nights * dailyPrice);
$('#nights-count').text($(this).val());
});
});
如何对匿名函数进行单元测试
+$(this).closest(".tour").data("daily-price")
和text(...)
和$('#total')
$('#nights-count')
醇>
请注意,我对单元测试很感兴趣(因此创建了一个完整的Selenium测试套件,它输入了某些东西然后检查元素的值不适合我) ,这不需要我添加新的抽象层。
通过抽象层我的意思是:我可以创建类JQueryAbstraction
然后创建2个子类 - 一个调用真正的jQuery方法,另一个调用真正的jQuery方法,它只计算调用次数
答案 0 :(得分:1)
您可以尝试介绍流行的单元测试轻量级框架,如Jasmine,Mocha,QUnit
所有这些框架都可以与AngularJS,JQuery等共存
从您使用匿名函数尝试的示例中,您可以将该函数转换为非匿名函数并将其传递给测试工具
确保到达最后一行我引入了一个简单的全局变量并为其赋值,比如done = true或done = false
示例:
select name, (case when (sum(case when TransTypeName like 'credit%' then amount else 0 end) -
sum(case when TransTypeName like 'Debit%' then amount ) else 0 end)) *5/100)<0 then 0 else (sum(case when TransTypeName like 'credit%' then amount else 0 end) -
sum(case when TransTypeName like 'Debit%' then amount ) else 0 end)) *5/100) as Interest
from ...........
现在您可以像在Jasmine中一样使用单元测试来测试 onReady 代码,您可以对实际文档做好评论
var done = false;
var onReady = function() {
$('#nights').on('keyup', function() {
var nights = +$(this).val();
var dailyPrice = +$(this).closest(".tour").data("daily-price");
$('#total').text(nights * dailyPrice);
$('#nights-count').text($(this).val());
});
done = true;
}
$(document).ready(onReady);
通过单元测试调用该功能
//$(document).ready(onReady);
但是:如果您对分别声明匿名函数不感兴趣,那么您可以遍历文档对象并获取就绪事件函数。