私は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。どのように私はこれを行うには成功することができますか?事前に
おかげ
UPDATE JackSamuraの答え通過:
親愛なる@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フォーラムにアクセスするための助成金を支払っていないので、それはありません。そして今、私は個人的な開発のためにシエスタの無料Liteバージョンを使用しています。 –
私はあなたのアドバイスの質問ベースの実装を更新しましたが、いくつかのエラーがありました。更新された部分を確認してください。どうもありがとう。 –
Bryntumフォーラムは無料で、登録しようとします。 Siesta Liteのユーザーも同様です。 – SamuraiJack