Ich benutze Bryntum Siesta für den UI-Test einer ExtJS-App. Ich habe ein TestClass
erstellt und ziele darauf ab, seine Methoden für verschiedene Ansichten zu verwenden. Die gesamten Testaktionen sind dieselben, nur einige spezifische Dinge ändern sich, wie package
, view
, grid
Namen. Hier einige Auszüge aus Test Suite:Wie überschreibt man testClass-Methoden mit Siesta?
Haupttest-Klasse
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
)
}
}
});
Und das Testclass von Package_Submodule
fordern und bekommen Erfolg:
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
}
)
});
});
Die Sache hier ist möchte ich Rufen Sie dieselbe TestClass
Methode für ein anderes Submodul auf und überschreiben Sie mehrere Dinge wie Package_Name
und Package_Submodule
. Wie kann ich Erfolg damit haben?
Vielen Dank im Voraus
UPDATE durch JackSamura Antwort:
Lieber @SamuraiJack Ich habe die Hauptklasse (LIST-Seite) Refactoring und eingefügt has
Attribut. Ebenso modifiziert die harness
mit config
Eigenschaft, aber leider hat es myPackageName
oder mySubModule
nicht überschrieben. Anstelle von ich habe diesen Fehler:
Waiting for element ">> treelistitem[_text=packageName]" to appear
Ebenso habe ich versucht, Funktionsargumente zu verwenden, aber es hat auch nicht funktioniert. Könnten Sie mir bitte eine Idee geben, warum ich neue Werte nicht außer Kraft setzen konnte?
Hauptklasse (Aktualisiert):
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'
}
},
Sehr geehrte @SamuraiJack danke für Ratschläge. Ich führe beide Aspekte ein und verstehe den Prozess. Übrigens habe ich leider keine Zuschüsse, um auf Bryntums Foren zuzugreifen, weil es bezahlt ist. Und jetzt benutze ich die kostenlose Lite-Version von Siesta für meine persönliche Entwicklung. –
Ich habe die Frage-basierte Implementierung Ihrer Ratschläge aktualisiert, aber mehrere Fehler bekommen. Könnten Sie bitte den aktualisierten Teil überprüfen. Danke vielmals. –
Bryntum Forum ist kostenlos, einfach versuchen, sich anzumelden. Siesta Lite-Benutzer sind ebenfalls willkommen. – SamuraiJack