Как проверить, является ли переменная пустой/нулевой/неопределенной в кипарисе

Этот блок кода используется для чтения файла 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'); (эта часть работает, но не другие)

это ошибка, которую я получил в кипарисе

поэтому я хочу знать, как мы проверяем, является ли значение нулевым или неопределенным, используя команды кипариса

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
116
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Пустые, нулевые и неопределенные значения являются ложными, поэтому вы можете выдать ошибку, если они не соответствуют действительности.

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);
})

Другие вопросы по теме