Как проверить, является ли значение целым числом или строкой в jasmine.js?
Я пишу unit test с помощью Jasmine в веб-приложении с помощью BackboneJS.
Существует множество примеров, показывающих, как проверить значение таким образом:
it("should set the id property to default value", function()
{
expect(this.task.get("id")).toEqual(null);
});
Но я не могу найти пример, проверяющий, является ли атрибут ли число или строка в Javascript, используя Jasmine.
Уместно ли сделать такую проверку?
Если да, то каков правильный способ сделать это?
Пример: Я хочу проверить, является ли id
целое число > 0. Как я могу сделать это в Jasmine?
Ответы
Ответ 1
Я бы сделал что-то вроде этого:
describe("when instantiated", function()
{
it("should exhibit attributes", function ()
{
.....
expect(this.task.get("id")).toMatch(/\d{1,}/);
.....
});
});
Ответ 2
Для потомков один из вопросов, заданных здесь, состоит в том, чтобы проверить, является ли значение числом. Из jasmine docs:
expect(12).toEqual(jasmine.any(Number));
Ответ 3
Честно говоря, я не знаю, каков правильный путь, но я напишу что-то вроде этого:
it("should set the id property to default value", function () {
var id = this.task.get("id");
expect(typeof id).toEqual('number');
expect(id).toBeGreaterThan(0);
});
Ответ 4
expect( this.task.get("id") ).toBeGreaterThan( 0 );
Если учесть, что:
expect( 1 ).toBeGreaterThan( 0 ); // => true
expect( "1" ).toBeGreaterThan( 0 ); // => true
expect( "a" ).toBeGreaterThan( 0 ); // => false
Ответ 5
Я использовал underscorejs, чтобы проверить такие вещи:
it('should be a number', function() {
expect(_.isNumber(this.task.get('id'))).toBeTruthy();
});
Ответ 6
Вы можете попробовать:
it('should be integer', function()
{
var id = this.task.get("id");
expect(id).toEqual(jasmine.any(Number));
expect(id).toBeGreaterThan(0);
expect(Math.trunc(id)).toEqual(id);
});
Если у вас есть число, которое не является целым числом, обрезание должно привести к тому, что это будет отличаться, что приведет к соответствующему сбою теста.
Если у вас нет поддержки ES6, вы можете использовать слово вместо этого.