我在$(document).ready(function())中有多个函数和很多代码。我正在使用jasmine来测试ready函数内部的函数以及ready()中的代码,但是当执行内部描述的测试用例时,它无法访问ready函数()中的代码。
我在$(document).ready(function())中有多个函数和很多代码。我正在使用jasmine来测试ready函数内部的函数以及ready()中的代码,但是当执行内部描述的测试用例时,它无法访问ready函数()中的代码。
$(document).ready(function () {
function testMe(){
testVar = true;
}
});
Jasmine测试套件
describe("test suite", function(){
beforeEach(function () {
testme = false
});
it("Test Alert Box Message For Change Modal", function() {
expect(testme).toEqual(true);
});
});
请建议采用上述方法采取何种方法。
答案 0 :(得分:1)
您没有测试代码是否已运行。甚至代码看起来像什么。您正在测试代码的作用。
在您的示例测试中,您有两个问题。
expect()
正在检查testme
而不是变量testVar
的值,因此始终会失败,因为testme
将未定义$(document).ready()
中定义该功能,但从不实际执行该功能。因此,即使您正在检查正确的变量,也不会更改该值,因为您没有调用它。 Jasmine将在执行测试之前准备好文档,因此在此函数中包含的代码没有问题。因此,对$(document).ready()
函数的测试应确保正确设置数据,注册事件处理程序等等。
你可以监视jQuery on()
函数,并确保它传递了正确的回调。间谍的调用数组获取调用对象的副本,您可以检查它以确保使用正确的选择器。回调本身将在单独的测试用例中进行测试。或者,您可以在测试页面上设置html fixture,然后在以后的测试用例中自行调用事件。
ready()
函数的内部函数的存在超出了测试范围。您希望能够更改/删除这些内部函数并重新运行测试,以确保您没有影响任何功能。如果函数不能在ready()
函数之外执行,那么它是一个实现细节,您无需担心它。