Jquery 如何使用Jasmine测试$(document).ready()中的函数或代码?
我在$(document).ready(function())中有多个函数和大量代码。我使用jasmine测试ready函数中的函数以及ready()中的代码,但是当执行descripe中的测试用例时,它无法访问ready函数()中的代码 我在$(document).ready(function())中有多个函数和大量代码。我使用jasmine测试ready函数中的函数以及ready()中的代码,但是当执行descripe中的测试用例时,它无法访问ready函数()中的代码 茉莉花测试套件Jquery 如何使用Jasmine测试$(document).ready()中的函数或代码?,jquery,html,jasmine,Jquery,Html,Jasmine,我在$(document).ready(function())中有多个函数和大量代码。我使用jasmine测试ready函数中的函数以及ready()中的代码,但是当执行descripe中的测试用例时,它无法访问ready函数()中的代码 我在$(document).ready(function())中有多个函数和大量代码。我使用jasmine测试ready函数中的函数以及ready()中的代码,但是当执行descripe中的测试用例时,它无法访问ready函数()中的代码 茉莉花测试套件 de
describe("test suite", function(){
beforeEach(function () {
testme = false
});
it("Test Alert Box Message For Change Modal", function() {
expect(testme).toEqual(true);
});
});
请建议上述方法需要采取的方法。您没有测试代码是否已运行。甚至是代码的样子。您正在测试代码的功能 在您的示例测试中,您有两个问题
expect()
正在检查testme
的值,而不是您的变量testVar
,因此这将始终失败,因为testme
将未定义$(document).ready()中定义函数,但从未实际执行它。因此,即使您检查了正确的变量,值也不会因为您没有调用它而更改
$(document).ready()
函数的测试应该确保数据设置正确,事件处理程序已注册等等
您可以监视jQueryon()
函数,并确保它通过了正确的回调。spy的calls数组获取调用对象的副本,您可以检查该副本以确保使用了正确的选择器。回调本身将在单独的测试用例中进行测试。或者,您可以在测试页面上设置一个html fixture,然后在以后的测试用例中自己调用事件
ready()
函数的内部函数不在测试范围内。您希望能够更改/删除这些内部函数并重新运行测试,以确保未影响任何功能。如果函数不能在ready()
函数之外执行,那么这是一个实现细节,您无需担心 您没有测试代码是否已运行。甚至是代码的样子。您正在测试代码的功能
在您的示例测试中,您有两个问题
expect()
正在检查testme
的值,而不是您的变量testVar
,因此这将始终失败,因为testme
将未定义$(document).ready()中定义函数,但从未实际执行它。因此,即使您检查了正确的变量,值也不会因为您没有调用它而更改
$(document).ready()
函数的测试应该确保数据设置正确,事件处理程序已注册等等
您可以监视jQueryon()
函数,并确保它通过了正确的回调。spy的calls数组获取调用对象的副本,您可以检查该副本以确保使用了正确的选择器。回调本身将在单独的测试用例中进行测试。或者,您可以在测试页面上设置一个html fixture,然后在以后的测试用例中自己调用事件
ready()
函数的内部函数不在测试范围内。您希望能够更改/删除这些内部函数并重新运行测试,以确保未影响任何功能。如果函数不能在ready()
函数之外执行,那么这是一个实现细节,您无需担心
describe("test suite", function(){
beforeEach(function () {
testme = false
});
it("Test Alert Box Message For Change Modal", function() {
expect(testme).toEqual(true);
});
});