茉莉花。循环遍及之前它

时间:2018-04-06 23:53:32

标签: javascript jasmine jasmine-node

我想在一个数组上运行循环,其中包含beforeEach设置相应值的一组测试,it也使用数组中的值。

以下示例显示了一般结构。调用myArray时无法识别问题forEach(请参阅注释行)

let myArray;
beforeAll(() => {
  myArray = getArray();
  log(myArray) // I can see its defined here
});
myArray.forEach((myValue) => { // myArray has no value here!!!
 beforeEach(function() {
  // do something with myValue
  log(myArray) // I can see its defined here
 });

 it('my test', () => {
   // do something with myValue
   log(myArray) // I can see its defined here
 });

}); // close loop

this这样的示例循环遍历it,但这并未解决循环的值的范围

2 个答案:

答案 0 :(得分:0)

您应该将myArray.forEach打包在其中一个beforeEach, it, afterEach, or afterAll中,因为beforeAll正在异步运行。

答案 1 :(得分:0)

您不需要使用beforeAll来获取阵列的数据。 在定义测试套件之前,您可以提前获取测试数据。

let myArray = [1, 2, 3]; //get data for tests

describe('Name of the group', () => {

    myArray.forEach(element => {
        beforeEach(() => {
            console.log('Data set before each: ' + myArray)
        });

        it('My Test', () => {
            console.log('Test#' + element)
        });
    });
});

可以使用jasmine-data-provider

使用数据驱动方法
const using = require('jasmine-data-provider');

let myArray = [1, 2, 3]; //get data for tests

describe('Name of the group using "using"', () => {       
    using(myArray, element => {
        beforeEach(() => {
            console.log('Data set before each: ' + myArray)
        });

        it('My Test', () => {
            console.log('Test#' + element)
        });
    });
});