Как написать тест, который проверяет несколько типов в chai

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

в чэе есть что-то похожее

expect(foo).to.be.a('string').or.a('null')

Если нет, то что было бы лучше всего при написании теста, который должен проверяться на несколько типов?

Ответ 1

Это, вероятно, было бы самым простым способом, поскольку нет or ключевого слова.

var str = null;

expect(str).to.satisfy(function(s){
    return s === null || typeof s == 'string'
});

Ответ 2

Первый аргумент, который вы передаете в chai assert является выражением, поэтому вы можете это сделать:

assert(assert.isString(foo) || assert.isNull(foo), 'must be a string or null');

Ответ 3

Chai предоставляет метод oneOf, который принимает массив возможных совпадений. Поэтому утверждение OP, где тип может быть либо строкой, либо нулем, может быть закодировано следующим образом...

expect(foo).to.be.oneOf(['string', null])

Ответ 4

Решение:

var str = null;
expect(str).to.satisfies(output=>!output); // testcase will pass

var str = '';
expect(str).to.satisfies(output=>!output); // testcase will pass

var str = 'test';
expect(str).to.satisfies(output=>!output); // testcase will fail