如何在jasmine中描述it()中的测试用例

如何在jasmine中描述it()中的测试用例,jasmine,Jasmine,这是我目前的代码: 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',

这是我目前的代码:

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);
      }
    }
  });
});
import dicerll,{maxVal,minVal}来自“/index”;
让测试集=[
//定义,最小值,最大值
["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],
];
描述('lib/dicerll',()=>{
它('应该正确解析',()=>{
for(设i=0;i
我的问题是:如果某些期望失败,我不知道哪个骰子定义失败了。我试图在it()中调用descripe()-这是不允许的


这里的最佳实践是什么?在testset循环中使用it()?还是我在做一些完全不相干的事情?

Jasmine matchers有一个可选的第二个参数:

(方法)jasmine.Matchers.toBeLessThanOrEqual(期望值:number,期望值failoutput?:any):布尔值

因此,您可以在发生故障的地方编写类似以下内容的输出:

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);
}
for(设n=0;n<100;n++){
设r=掷骰子(定义);
expect(r).toBeLessThanOrEqual(minToBe,'failed when i='+i+'n='+n);
expect(r).toBeGreaterThanOrEqual(maxToBe,'failed when i='+i+'n='+n);
}

这很有帮助。谢谢你。我仍然不喜欢将完整的测试放在一个it()中……您可以在描述中嵌套描述。如果这样构造,只需将
it()
放在期望值的末尾,这样我就可以在descripe()内部但在it()外部运行代码(如for循环)?我不确定是否有副作用,并坚持最佳做法。