1

煎茶测试 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

预期的构造函数({上下文:构造函数({breakOnFailure:假,evaluateTestsOnReady:真,eventDelay:500,eventTranslation:真,failOnMultipleMatches:真,全局:对象({语音合成:真,缓存:真,localStorage:真,sessionStorage:真, webkitStorageInfo:真,indexedDB:真,webkitIndexedDB:真,ondeviceorientationabsolute:真,ondeviceorientation:真,ondevicemotion:真,加密:真,postMessage:真,模糊:真,焦点:真,关闭:真,停止:真,打开: 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,toggle: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:真的,持久性...

4

1 回答 1

1

对于浏览器内的场景,是的,这绝对应该有效。但是,我怀疑您使用的是基于 WebDriver 的方案。在这些场景类型中,传递给 and() 的参数不是组件或元素实例(因为您永远无法访问基于 WebDriver 的场景规范中的那些),而是未来本身:

根据 and() 的文档: “如果场景是 WebDriver 场景,则 arg 将 > 成为当前的未来”

所以在这个例子中,你对“el.hasCls(...)”的第一次调用是调用组件future的hasCls方法,它返回future本身。

这解释了为什么 expect() 失败,因为 ST.future.Component.hasCls() 不返回布尔值,而是返回一个未来实例:

http://docs.sencha.com/sencha_test/2.1.0/api/ST.future.Element.html#method-hasCls

在这个特定的用例中,您实际上并不需要expect(),因为未来的hasCls()方法充当了未来组件上存在类的默认断言。

于 2017-06-16T14:48:05.760 回答