【发布时间】:2018-05-13 04:41:02
【问题描述】:
我正在使用 Bryntum Siesta 来测试 ExtJS 应用程序的 UI。我创建了一个TestClass,旨在将其方法用于不同的视图。测试的整个动作是相同的,只是一些特定的事情发生了变化,例如package、view、grid 名称。以下是来自 Test Suite 的一些 sn-ps:
主测试类
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 和Package_Submodule。我怎样才能成功做到这一点?
提前致谢
更新通过 JackSamura 的回答:
亲爱的@SamuraiJack 我重构了主类(ListScreen)并插入了has 属性。还用config 属性修改了harness,但不幸的是它没有覆盖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
)
}
}
});
index.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'
}
},
【问题讨论】:
标签: javascript class extjs ui-testing siesta