如何在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循环)?我不确定是否有副作用,并坚持最佳做法。