Jasmine Test中的Stubbing事件属性

时间:2014-04-22 10:05:50

标签: javascript jasmine

我非常擅长编写Jasmine测试并需要一些帮助。

基本上,我在下面有一个函数调用另一个函数并传递事件处理程序(所以基本上当在页面上单击一个链接时,事件的引用被传递给另一个函数,以便我可以从innerText属性中检索内容事件):

$('$clickME').click(function (e) {
    return self.CallAnotherFunction(e);
});

function CallAnotherFunction(myevent)
{
    myevent.preventDefault();
    var source = myevent.target || myevent.srcElement;
}

现在在我的茉莉花测试中:

it('should read the clicked item text', function ()
{      
    var event = { preventDefault: jasmine.createSpy() };

   //event.source.innerText = "ff";

    //Act
    myObject.prototype.CallAnotherFunction(event);

});

问题是当我运行测试时失败并出现以下错误:

TypeError:' undefined'不是对象(评估' source.innerText')

因此看起来我创建的间谍事件有一个空源。

我的问题是如何设置event.target&间谍事件的event.srcElement,以便我的测试可以通过。

谢谢

1 个答案:

答案 0 :(得分:4)

找到上述解决方案:

需要在spy上设置存根,因为使用createSpy会创建一个新的模拟对象。因此,添加以下内容以设置间谍就像魅力一样:

    var event = { preventDefault: jasmine.createSpy(), srcElement: jasmine.createSpy() };
    event.srcElement.innerText = 'some value of anchor tag';