Nach dem Intern user guide ich eine einfache Seite Objekt schrieb:Wie ketten ich interne Seitenobjektfunktionsaufrufe?
define(function(require) {
function ListPage(remote) {
this.remote = remote;
}
ListPage.prototype = {
constructor: ListPage,
doSomething: function(value) {
return this.remote
.get(require.toUrl('http://localhost:5000/index.html'))
.findByCssSelector("[data-tag-test-id='element-of-interest']")
.click().end();
}
};
return ListPage;
});
Im Test möchte ich doSomething
zweimal in einer Reihe nennen, wie folgt aus:
define(function(require) {
var registerSuite = require('intern!object');
var ListPage = require('../support/pages/ListPage');
registerSuite(function() {
var listPage;
return {
name: 'test suite name',
setup: function() {
listPage = new ListPage(this.remote);
},
beforeEach: function() {
return listPage
.doSomething('Value 1')
.doSomething('Value 2');
},
'test function': function() {
// ...
}
};
});
});
Allerdings, wenn ich die laufen Test, bekomme ich diesen Fehler:
TypeError: listPage.doSomething(...).doSomething is not a function
ich habe versucht, beschrieb einige Ansätze in this question, ohne Erfolg.
Dies könnte wahr sein, aber ich bin überrascht, dass solch komplizierter Code (z. B. eine Funktion, die eine Funktion zurückgibt, die einen Befehl zurückgibt) erforderlich ist. In der Zwischenzeit versuche ich stattdessen WebdriverIO, das synchronen Code unterstützt. –