Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/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
如何编写jasmine单元测试用例来测试angularjs中的事件处理程序_Angularjs_Unit Testing_Jasmine - Fatal编程技术网

如何编写jasmine单元测试用例来测试angularjs中的事件处理程序

如何编写jasmine单元测试用例来测试angularjs中的事件处理程序,angularjs,unit-testing,jasmine,Angularjs,Unit Testing,Jasmine,我目前正在编写一个jasmine单元测试用例来测试按钮的点击事件。我已经为modal popup编写了以下测试用例,请找到我的plnkr。我有一个叫“添加”的按钮。如果用户单击按钮,将打开一个模式弹出窗口。因此,我想编写一个测试用例,以确定当用户单击add按钮时是否显示模式。我该怎么做? 谢谢 瓦伦·克里希纳。P首先,与所有单元测试一样,确保不要将N个测试混入一个测试中—这总是会导致麻烦 在您的情况下,测试可以分为两个测试: 单击Add时是否调用了正确的函数 该函数是否显示模型对话框 对于第一个

我目前正在编写一个jasmine单元测试用例来测试按钮的点击事件。我已经为modal popup编写了以下测试用例,请找到我的plnkr。我有一个叫“添加”的按钮。如果用户单击按钮,将打开一个模式弹出窗口。因此,我想编写一个测试用例,以确定当用户单击add按钮时是否显示模式。我该怎么做? 谢谢
瓦伦·克里希纳。P

首先,与所有单元测试一样,确保不要将N个测试混入一个测试中—这总是会导致麻烦

在您的情况下,测试可以分为两个测试:

  • 单击
    Add
    时是否调用了正确的函数
  • 该函数是否显示模型对话框
  • 对于第一个测试,我建议您将事件处理程序的代码移动到函数中,而不是将其对齐。这样,您就可以在测试设置中覆盖函数,并在以后恢复它(伪代码):

    第二个测试意味着现在调用新函数并检查DOM中是否有模式弹出窗口

    // setup
    var origFunc = addFunction;
    var iWasCalled = false;
    addFunction = function() { iWasCalled = true; }
    
    // test
    $('#add').click();
    
    // validation
    assert that iWasCalled is now true
    
    // tear down
    addFunction = origFunc