I'm working on some end-to-end tests using JavaScript (Protractor). I've got a PageObjects file that contains the following:
var SomeClass = function() {
this.get = function() {
browser.get('http://blah');
};
this.person = function() {
var firstNameInput = element(by.id('firstName'));
var lastNameInput = element(by.id('lastName'));
this.setTitle = function(title) {
element(by.xpath('//select[@id="title"]/option[text()="' + title +'"]')).click();
};
this.setFirstName = function(firstName) {
firstNameInput.sendKeys(firstName);
};
this.setLastName = function(lastName) {
lastNameInput.sendKeys(lastName);
};
};
};
module.exports = new SomeClass();
In my spec, I'm trying to access the nested function like this:
describe('some test', function() {
var someClass = require('./some_class.po.js');
var data = require('./some_class.data.json');
it('do stuff', function() {
someClass.get();
someClass.person.setTitle(data.title);
someClass.person.setFirstName(data.firstName);
someClass.person.setLastName(data.lastName);
});
});
When I try to run this test, the higher level someClass.get()
works just fine, but when it attempts to execute someClass.person.setTitle(data.title)
, I get a Failed: undefined is not a function
message.
Any idea what I'm doing wrong? I'm only using setters, no getters. Don't think I need to return anything.