我非常擅长编写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,以便我的测试可以通过。
谢谢
答案 0 :(得分:4)
找到上述解决方案:
需要在spy上设置存根,因为使用createSpy会创建一个新的模拟对象。因此,添加以下内容以设置间谍就像魅力一样:
var event = { preventDefault: jasmine.createSpy(), srcElement: jasmine.createSpy() };
event.srcElement.innerText = 'some value of anchor tag';