Как описать тестовый сценарий внутри it () в Жасмин - PullRequest
0 голосов
/ 22 января 2019

На данный момент это мой код:

import diceroll, {maxVal, minVal} from './index';

let testset=[
  // definition, min, max
  ["1",1,1],
  ["w6",1,6],
  ["1w6",1,6],
  ["2w6",2,12],
  ["2w6+12",14,24],
  ["2w6+12+2w3",16,30],
  ["3w6-3",0,15],
];

describe('lib/diceroll', () => {
  it('should parse correctly', () => {
    for (let i = 0; i < testset.length; i++) {
      let definition = testset[i][0];
      let minToBe = testset[i][1];
      let maxToBe = testset[i][2];

      let min = minVal(definition);
      let max = maxVal(definition);

      // @todo: OnFailure tell me the current definition!

      expect(minVal(definition)).toBe(minToBe);
      expect(maxVal(definition)).toBe(maxToBe);

      for (let n = 0; n < 100; n++) {
        let r = diceroll(definition);
        expect(r).toBeLessThanOrEqual(minToBe);
        expect(r).toBeGreaterThanOrEqual(maxToBe);
      }
    }
  });
});

Моя проблема: если некоторые ожидания не удаются, я не знаю, какое определение diceroll не удалось.Я пытался вызвать description () внутри it (), что недопустимо.

Какова лучшая практика здесь?Используя его () внутри моего testset-цикла?Или я здесь что-то делаю совсем не так?

1 Ответ

0 голосов
/ 22 января 2019

Сопоставители Jasmine имеют необязательный второй аргумент:

(method) jasmine.Matchers<number>.toBeLessThanOrEqual(expected: number, expectationFailOutput?: any): boolean

Таким образом, вы можете написать что-то вроде следующего для вывода, где произошел сбой:

for (let n = 0; n < 100; n++) {
  let r = diceroll(definition);
  expect(r).toBeLessThanOrEqual(minToBe, 'failed when i='+i+' n='+n);
  expect(r).toBeGreaterThanOrEqual(maxToBe, 'failed when i='+i+' n='+n);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...