Жасмин - любое булево (jasmine.any(булеанское))
Я пишу модульные тесты для angular с использованием кармы, жасмина. Попробуйте написать:
expect(item).toEqual(jasmine.any(Boolean));
но получил:
Expected true to equal <jasmine.any(function Boolean() { [native code] })>.
mm.. может быть, я что-то делаю неправильно), или это еще один способ написать тест для значения в этом случае:
if (true или false) - передано, если любое другое - fail
Ответы
Ответ 1
Я думаю, что вам нужен пользовательский Matcher примерно так:
toBeBoolean : function () {
return {
compare : function (actual, expected) {
return {
pass : (typeof actual === 'boolean'),
message : 'Expected ' + actual + ' is not boolean'
};
}
};
}
Как создать пользовательский макет
Ответ 2
Также возможно:
expect(item).toMatch(/true|false/);
Ответ 3
Я ожидаю, что ваш код будет работать так, как ожидалось, но, очевидно, похоже, что жасмин ведет себя немного странно в этом случае.
Я бы порекомендовал вам следующее обходное решение:
expect(typeof item).toEqual('boolean');
Ответ 4
Для меня заметное решение неверно. По крайней мере, не для того, как я ожидаю, что он будет использоваться.
Я сделал это так:
jasmine.addMatchers({
toBeBoolean: function () {
return {
compare: function (actual, expected) {
return {
pass: typeof actual === 'boolean',
message: 'Expected ' + actual + ' is not boolean'
};
}
};
}
});
потому что вы не передаете ожидаемое значение, просто фактическое.
Таким образом, вы можете использовать это:
expect(true|false).toBeBoolean();