Sencha Test 2.1
是否存在关于在期望中使用hasCls的错误?
让我说我有类似的东西:
this.component().gotoButton('[text=See]').gotoComponent('menucheckitem[text=some text]')
.and(function (el) {
el.hasCls('x-menu-item-checked'); //this works correctly, validates the el has the class and returns a timeout if the el doesn't actually have the class
expect(el.hasCls('x-menu-item-checked')).toBe(true); // but doing this throws a nasty error, see the detail below
});
(虽然在这种情况下,它是一个组件而不是一个元素,但元素会发生同样的事情)
所以我尝试引用不同的元素,并且总是试着这样做:
expect(el.hasClass('some')).toBe(true);
我收到此错误,想知道我是否遗漏了某些内容,或者这是一个错误。
我在文档中看到这应该是可能的。 http://docs.sencha.com/sencha_test/2.1.0/api/ST.future.Element.html?#method-and
预期的构造函数({context:constructor({breakOnFailure:false, evaluateTestsOnReady:true,eventDelay:500,eventTranslation:true, failOnMultipleMatches:true,globals:Object({speechSynthesis:true, 缓存:true,localStorage:true,sessionStorage:true, webkitStorageInfo:true,indexedDB:true,webkitIndexedDB:true, ondeviceorientationabsolute:true,ondeviceorientation:true, ondevicemotion:true,crypto:true,postMessage:true,blur:true, focus:true,close:true,stop:true,open:true,alert:true, applicationCache:true,performance:true,confirm:true,onunload: true,onunhandledrejection:true,onstorage:true,prompt:true, onrejectionhandled:true,onpopstate:true,onpageshow:true,print: true,onpagehide:true,ononline:true,onoffline:true, requestAnimationFrame:true,onmessage:true,onlanguagechange:true, onhashchange:true,cancelAnimationFrame:true,onbeforeunload:true, onwaiting:true,onvolumechange:true,captureEvents:true,ontoggle: true,ontimeupdate:true,onsuspend:true,releaseEvents:true, onsubmit:true,onstalled:true,onshow:true,getComputedStyle:true, onselect:true,onseeking:true,onseeked:true,matchMedia:true, onscroll:true,onresize:true,moveTo:true,onreset:true, onratechange:true,onprogress:true,moveBy:true,onplaying:true, onplay:true,onpause:true,onmousewheel:true,resizeTo:true, onmouseup:true,onmouseover:true,resizeBy:true,onmouseout:true, onmousemove:true,onmouseleave:true,onmouseenter:true, getSelection:true,onmousedown:true,onloadstart:true, onloadedmetadata:true,find:true,onloadeddata:true,onload:true, getMatchedCSSRules:true,onkeyup:true,onkeypress:true,onkeydown: true,webkitRequestAnimationFrame:true,oninvalid:true,oninput: true,onfocus:true,onerror:true,webkitCancelAnimationFrame:true, onended:true,onemptied:true,webkitCancelRequestAnimationFrame: 是的,onduratio ...
答案 0 :(得分:1)
对于浏览器内情景,是的,这绝对有用。但是,我怀疑您使用的是基于WebDriver的方案。在这些场景类型中,传递给and()的参数不是组件或元素实例(因为您永远无法访问基于WebDriver的场景规范中的那些),而是未来本身:
根据和()的文档:“如果方案是WebDriver方案,那么arg将是>当前的未来”
所以在这个例子中,你第一次调用“el.hasCls(...)”是在组件future上调用hasCls方法,它返回未来。
这解释了expect()失败的原因,因为ST.future.Component.hasCls()不返回布尔值,而是返回未来的实例:
http://docs.sencha.com/sencha_test/2.1.0/api/ST.future.Element.html#method-hasCls
在这个特定的用例中,你实际上并不需要 expect(),因为未来的 hasCls()方法充当默认断言的存在关于未来组成部分的课程。