Этот блок кода используется для чтения файла Excel и получения пользовательских данных по заданной роли пользователя. но если роль пользователя не существует в файле Excel, она вернет неопределенное значение. как мы можем проверить, что переменная «пользователь» не является неопределенной или нулевой?
cy.task('getExcelData', Cypress.env('usersFilePath')).then((users) => {
const user = users.find(user => {
return user.userRole === 'userRole';
});
cy.wrap(user).should('not.be.empty');
cy.wrap(user).should('not.be.a',undefined)
cy.wrap(user).should('not.be.a',null)
signIn(user.username, user.password);
});
cy.wrap(пользователь).should('not.be.empty'); (эта часть работает, но не другие)
это ошибка, которую я получил в кипарисе
поэтому я хочу знать, как мы проверяем, является ли значение нулевым или неопределенным, используя команды кипариса
Пустые, нулевые и неопределенные значения являются ложными, поэтому вы можете выдать ошибку, если они не соответствуют действительности.
cy.task('getExcelData', Cypress.env('usersFilePath')).then((users) => {
const user = users.find(user => {
if (!user) {
throw new Error('user is empty, null, or undefined', user)
}
return user.userRole === 'userRole';
});
signIn(user.username, user.password);
});
См. chaijs .a(type[, msg])
Утверждает, что целевой тип равен заданному строковому типу. Типы нечувствительны к регистру.
expect(undefined).to.be.an('undefined')
.a()
или .an()
выполняет проверку typeof
, которая возвращает строку, поэтому вам просто нужно указать тип "undefined"
в кавычках.
cy.wrap(user).should('not.be.a', "undefined")
или отпустите .a
, чтобы вместо этого проверить ссылку
cy.wrap(user).should('not.be', undefined)
Если вы хотите проверить результат поиска в массиве пользователей, сделайте это вне функции .find()
.
Если пользователь с требуемой ролью не найден, функция .find()
возвращает undefined
(никогда не содержит null, пустой строки или пустого массива).
Ссылка Array.prototype.find()
cy.task('getExcelData', Cypress.env('usersFilePath')).then((users) => {
/*
e.g users = [
{ userRole: 'admin', username: '...', password: '...' },
{ userRole: 'userRole', username: '...', password: '...' },
]
*/
const user = users.find(user => user.userRole === 'userRole')
if (!user) {
throw new Error('user is undefined')
}
signIn(user.username, user.password);
})