Как определить глобальную переменную вне блока описания в мокко?
Привет, я пытался написать тестирование с использованием mocha chimp и webdriverio. так как мне приходилось работать с разными идентификаторами в конце шрифта, в каждом блоке мне приходилось определять их для разных целей. Я попытался определить идентификатор за пределами блока описания, тогда он показывает, что браузер не определен. Вот пример кода.
describe('password validation', function () {
it('password should be empty @watch ', function () {
const passwordInput = browser.element('#passwordInput');
assert.equal(passwordInput.getValue(),"");
});
it("should identify weak password @watch",function () {
const passwordInput = browser.element('#passwordInput');
passwordInput.setValue("helloWordl");
browser.waitForVisible(".has-warning",500);
passwordInput.setValue("helloWordl@3");
})
it("should identify miss matched and matched password @watch",function () {
const confirmpasswordInput = browser.element('#confirmpasswordInput');
confirmpasswordInput.setValue("adofidlf"); //miss matched password given
browser.waitForVisible(".has-error",50); //it should shows the error for worng password
confirmpasswordInput.setValue("helloWordl@3");
browser.waitForVisible(".has-success",50);
})
} )
Кто-нибудь может сказать мне, как определить переменную вне описывающего блока, включая нотацию браузера, так что мне не нужно определять их каждый раз в другом описывающем блоке.
2 ответа
Вы можете определить переменные в describe
блокировать и использовать beforeEach
для инициализации (из документации mocha ( https://mochajs.org/)):
describe('Connection', function() {
var db = new Connection,
tobi = new User('tobi'),
loki = new User('loki'),
jane = new User('jane');
beforeEach(function(done) {
db.clear(function(err) {
if (err) return done(err);
db.save([tobi, loki, jane], done);
});
});
describe('#find()', function() {
it('respond with matching records', function(done) {
db.find({type: 'User'}, function(err, res) {
if (err) return done(err);
res.should.have.length(3);
done();
});
});
});
});
Вы можете определить идентификатор селектора как строку в объекте вне описания. как твой случай будет
const target = {
input:{
password:'#passwordInput',
confirmPassword:'#confirmpasswordInput'
}
}
describe('something',()=>{console.log(target.input.password)})
!!! "Браузер". Команда не может быть запущена за пределами description (), вам нужно будет описать текущее имя тестового файла для нее и использовать before () или beforeEach() для ее использования. Описание () может содержать другое гнездо.
describe('Test A',()=>{
var element = {}
before(()=>{
browser.url('...')
element['input']['password'] = browser.element('passwordInput')
})
describe('case A',()=>{
it('should empty',()=>{
assert.equal(element.input.password.getValue(),'')
})
})
})