当我通过网络浏览器(Safari或chrome)运行该测试时,该测试通过,但通过grunt-contrib-茉莉花测试则失败。
TypeError: 'undefined' is not a function (evaluating 'document.getElementsByClassName('video')[0].click()'
奇怪的是document.getElementsByClassName('video')。length = 1,但是document.getElementsByClassName('video')[0] ===未定义
describe('ringing incomming', function (){
var ringing_url = "ringing_payload"
var webRtcUi = false;
var accept = false;
var hangup = false
beforeEach(function (){
accept = jasmine.createSpy('accept');
hangup = jasmine.createSpy('hangup');
webRtcUi = new WeemoWebRtcUi.WebRtcUi({dn: "wassupHomeBoy", accept: accept, hangup: hangup }, {legacy: false, uiRingToneUrl: ringing_url}, false);
webRtcUi.ringing();
});
afterEach(function (){
document.body.removeChild(document.getElementsByClassName('incoming-call')[0]);
});
it('on accept clicked callobject accept called', function (){
document.getElementsByClassName('video')[0].click();
expect(accept).toHaveBeenCalledWith();
});
});
任何帮助表示赞赏!
最佳答案
我的症状不对。
实际上,phantomjs中不存在.click()函数。即使console.log为空白,Object.keys(document.getElementsByClassName('video')[0])仍返回数据。
我通过使用解决了问题
function click(el){
var ev = document.createEvent("MouseEvent");
ev.initMouseEvent(
"click",
true /* bubble */, true /* cancelable */,
window, null,
0, 0, 0, 0, /* coordinates */
false, false, false, false, /* modifier keys */
0 /*left*/, null
);
el.dispatchEvent(ev);
}
在这里找到:
Triggering click event PhantomJS
关于javascript - 测试在Jasmine中通过但在grunt-contrib-jasmine中失败:document.getElementsByClassName,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24490178/