저는 ExtJS 앱을 테스트하는 UI에 Bryntum Siesta를 사용하고 있습니다. 나는 TestClass
을 만들었으며 다른 뷰에 대해 그 메서드를 사용하려고합니다. 테스트의 전체 동작은 동일하지만 일부 특정 작업 만 변경됩니다 (예 : package
, view
, grid
).Siesta로 testClass 메서드를 재정의하는 방법은 무엇입니까?
홈페이지 테스트 클래스
var isDisplaying = 'Grid is displaying now.';
var collapseDesc = 'Collapse Navbar';
Class('Siesta.Test.ListScreen', {
isa : Siesta.Test.ExtJS,
methods: {
navigation: function (callback) {
var t = this;
t.chain(
{waitForCQ: 'treelist[itemId=navigationTreeList]'},
function (next) {
t.click('treelist[itemId=navigationTreeList]');
next();
},
{click: '>> treelistitem[_text=Package_Name]'},
{click: '>> treelistitem[_text=Package_Submodule]', desc: 'Package Submodule'+isDisplaying},
{click: '#main-navigation-btn => .fa-navicon', desc: collapseDesc},
function (next) {
console.log('navigation func log');
next();
},
callback
)
}
}
});
그리고이 TestClass에 Package_Submodule
에서 전화 및 성공 점점 :
describe('UI Testing: Submodule List Screen', function (t) {
//Extended method for navigation to submodule
t.it('Should open: Submodule Grid', function (t) {
t.chain(
{
navigation: t.next
}
)
});
});
여기 일이 내가 원하는됩니다 여기 테스트 스위트의 일부 조각입니다 TestClass
메서드를 다른 서브 모듈에 호출하고 Package_Name
및과 같은 몇 가지를 재정의합니다. 210. 어떻게하면 성공할 수 있습니까? JackSamura의 대답을 통해 사전
UPDATE에서
감사 :
친애하는 @SamuraiJack 나는 메인 클래스 (ListScreen)를 리팩토링 및 삽입 한 has
속성을. 또한 harness
을 config
속성으로 수정했지만 불행히도 myPackageName
또는 mySubModule
을 재정의하지 않았습니다. 대신 나는이 오류가있어 :
Waiting for element ">> treelistitem[_text=packageName]" to appear
마찬가지로 나는 함수 인자를 사용하려했지만 너무 효과가 없었다. 왜 내가 새로운 가치를 무시할 수 없는지 생각해 주시겠습니까?
메인 클래스은 (업데이트) :
var isDisplaying = 'Grid is displaying now.';
var collapseDesc = 'Collapse Navbar';
Class('Siesta.Test.ListScreen', {
isa : Siesta.Test.ExtJS,
has : {
myPackageName : 'packageName',
mySubModule : 'subModule'
},
methods: {
navigation: function (callback) {
var t = this;
t.chain(
{waitForCQ: 'treelist[itemId=navigationTreeList]'},
function (next) {
t.click('treelist[itemId=navigationTreeList]');
next();
},
{click: '>> treelistitem[_text='+this.myPackageName+']'},
{click: '>> treelistitem[_text='+this.mySubModule+']', desc: this.mySubModule+isDisplaying},
{click: '#main-navigation-btn => .fa-navicon', desc: collapseDesc},
function (next) {
console.log('navigation func log');
next();
},
callback
)
}
}
});
인덱스를. JS :
는group: 'UI Tests',
items: [
{
group: 'Submodule List Screen',
testClass: Siesta.Test.ListScreen,
items: [
{
title : 'Submodule1',
hostPageUrl : localApp,
url : '02-ui-tests/02_01-submodule-list-screen/submodule1-list.t.js',
config : {
myPackageName : 'Package1',
mySubModule : 'Submodule1'
}
},
친애하는 @SamuraiJack이 조언에 감사드립니다. 나는 양면을 구현하고 그 과정을 이해한다. 그건 그렇고 불행히도 나는 그것이 있기 때문에 Bryntum 포럼에 액세스 할 수있는 보조금이 없습니다. 그리고 지금은 개인적인 개발을 위해 Siesta의 무료 라이트 버전을 사용하고 있습니다. –
조언을 기반으로 질문을 업데이트했지만 몇 가지 오류가 발생했습니다. 업데이트 된 부분을 검토해주십시오. 고마워. –
Bryntum 포럼은 무료이며, 단지 등록하려고 시도합니다. Siesta Lite 사용자도 환영합니다. – SamuraiJack