Jquery 在javascript中具有参数化函数的spyOn。给我错误类型错误:e未定义
我正在使用jasmine为javascript编写测试用例,但当我为一个函数创建spyOn并调用loginSubmit时,它在该特定函数中给了我错误“TypeError:e未定义” 我的测试代码如下:Jquery 在javascript中具有参数化函数的spyOn。给我错误类型错误:e未定义,jquery,jasmine,Jquery,Jasmine,我正在使用jasmine为javascript编写测试用例,但当我为一个函数创建spyOn并调用loginSubmit时,它在该特定函数中给了我错误“TypeError:e未定义” 我的测试代码如下: describe('this will test for html fixtures and login function called', function (){ beforeEach(function() { jasmine.getFixtures().fixtu
describe('this will test for html fixtures and login function called', function (){
beforeEach(function() {
jasmine.getFixtures().fixturesPath = 'base/spec/javascripts/fixtures';
loadFixtures('login.fixtures.html');
});
it('expect fixtures to exist', function() {
expect('form').toExist();
expect('form').toContainElement('button');
});
spyOn(window, $.fn.loginSubmit());
$('.submit').click();
it('expect function to be called', function(){
expect(loginSubmit).toBeCalled();
});
});
Javascript代码如下所示:
$.fn.loginSubmit = function(e) {
e.preventDefault();
// my whole functionality
};
请告诉我这个代码有什么问题,如果我做错了什么,请给我建议。我是测试前端javascript的新手。spyOn()的第一个参数应该是包含要监视的函数的对象,第二个参数应该是表示要监视的函数名称的字符串。这可以在中的示例等级库文件中看到 在您的情况下,如果您试图监视
窗口上的loginSubmit()
函数。$.fn
,您应该调用:
spyOn(window.$.fn, 'loginSubmit');
但是,看看您的代码,我不确定您是否需要对窗口的引用,因此您可以调用:
spyOn($.fn, 'loginSubmit');
您当前看到的错误是因为您实际上正在调用loginSubmit()
函数来监视它。此函数需要向其传递一个参数,您在JavaScript代码中已将其命名为e
。但是,由于测试调用了loginSubmit()
,而没有任何参数,因此您的代码有理由抱怨e未定义
,谢谢Nathan的回复。实际上,loginSubmit函数是在表单提交时调用的。那个么,我将如何在spyOn函数中传递e(事件),以便测试用例能够工作,或者我将做其他事情?