Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何使用Jasmine测试$(document).ready()中的函数或代码?_Jquery_Html_Jasmine - Fatal编程技术网

Jquery 如何使用Jasmine测试$(document).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

我在$(document).ready(function())中有多个函数和大量代码。我使用jasmine测试ready函数中的函数以及ready()中的代码,但是当执行descripe中的测试用例时,它无法访问ready函数()中的代码

我在$(document).ready(function())中有多个函数和大量代码。我使用jasmine测试ready函数中的函数以及ready()中的代码,但是当执行descripe中的测试用例时,它无法访问ready函数()中的代码

茉莉花测试套件

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()中定义函数,但从未实际执行它。因此,即使您检查了正确的变量,值也不会因为您没有调用它而更改
  • Jasmine将在执行测试之前准备好文档,因此此函数中的代码没有问题。因此,对
    $(document).ready()
    函数的测试应该确保数据设置正确,事件处理程序已注册等等

    您可以监视jQuery
    on()
    函数,并确保它通过了正确的回调。spy的calls数组获取调用对象的副本,您可以检查该副本以确保使用了正确的选择器。回调本身将在单独的测试用例中进行测试。或者,您可以在测试页面上设置一个html fixture,然后在以后的测试用例中自己调用事件


    ready()
    函数的内部函数不在测试范围内。您希望能够更改/删除这些内部函数并重新运行测试,以确保未影响任何功能。如果函数不能在
    ready()
    函数之外执行,那么这是一个实现细节,您无需担心

    您没有测试代码是否已运行。甚至是代码的样子。您正在测试代码的功能

    在您的示例测试中,您有两个问题

  • 您的
    expect()
    正在检查
    testme
    的值,而不是您的变量
    testVar
    ,因此这将始终失败,因为
    testme
    将未定义
  • 您在
    $(document).ready()中定义函数,但从未实际执行它。因此,即使您检查了正确的变量,值也不会因为您没有调用它而更改
  • Jasmine将在执行测试之前准备好文档,因此此函数中的代码没有问题。因此,对
    $(document).ready()
    函数的测试应该确保数据设置正确,事件处理程序已注册等等

    您可以监视jQuery
    on()
    函数,并确保它通过了正确的回调。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);
        });
    });