Ответ 1
Это, вероятно, было бы самым простым способом, поскольку нет or
ключевого слова.
var str = null;
expect(str).to.satisfy(function(s){
return s === null || typeof s == 'string'
});
Я пытаюсь написать тест, который будет проходить, если ввод является либо строкой, либо нулевым значением
в чэе есть что-то похожее
expect(foo).to.be.a('string').or.a('null')
Если нет, то что было бы лучше всего при написании теста, который должен проверяться на несколько типов?
Это, вероятно, было бы самым простым способом, поскольку нет or
ключевого слова.
var str = null;
expect(str).to.satisfy(function(s){
return s === null || typeof s == 'string'
});
Первый аргумент, который вы передаете в chai assert
является выражением, поэтому вы можете это сделать:
assert(assert.isString(foo) || assert.isNull(foo), 'must be a string or null');
Chai предоставляет метод oneOf, который принимает массив возможных совпадений. Поэтому утверждение OP, где тип может быть либо строкой, либо нулем, может быть закодировано следующим образом...
expect(foo).to.be.oneOf(['string', null])
Решение:
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