Как проверить типы данных числа и нуля в Чай и Почтальон? - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь проверить тип данных ответа в моем тесте API с помощью Postman. Возвращаемое значение может быть целое число, число с плавающей запятой или ноль . Как я могу сделать это с Чайем и одним утверждением?

это мои упрощенные утверждения в тесте Почтальона с использованием javascript и Chai.

    pm.expect(23).to.be.a('number'); // PASS
    pm.expect(2.3).to.be.a('number'); // PASS
    pm.expect(23).to.be.oneOf(['number', null]); // FAIL
    pm.expect(2.3).to.be.oneOf(['number', null]); // FAIL

Я ожидаю, что все утверждения пройдут. Спасибо, и я ценю любой комментарий.

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Поскольку null является типом object в JavaScript, запишите контрольный пример как

pm.expect(typeof 23).to.be.oneOf(['number', 'object']);

Это, вероятно, простой способ, и его можно использовать в простых проверках.Однако я бы порекомендовал вам использовать второй способ, т. Е. Использовать самый быстрый JSON Schema Validator.

var Ajv = require('ajv'),
ajv = new Ajv({logger: console}),
schema = {
    "properties": {
        "myNumber": {
            "type": ["number","null"]
        }
    }
};

pm.expect(ajv.validate(schema, {myNumber: 23})).to.be.true; 
1 голос
/ 16 апреля 2019

так что я предполагаю, что вы выбрали специализированный метод, но я не думаю, что он существует, поэтому я немного обманул. Вместо того, чтобы использовать одно предопределенное состояние, я сам сделал оценку и оценил ее как истинную

главная проблема здесь в том, что typeof (null) возвращает «объект», который, как я полагаю, будет недостаточен для сравнения

let element=[23,null,12];
  for(let e of element){

  //one statement
  pm.expect(e==null||typeof(e)=='number').to.be.true


  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...