循环遍历在其中创建的数组

时间:2017-05-25 14:22:42

标签: javascript node.js

我正在编写一个代码,其中it块生成一个数组,我喜欢循环它并在同一个描述块中进行一些测试。我尝试将该数组写入文件并访问它,但这些测试在写入之前先执行。我无法在mocha测试之外访问a,但我想知道是否还有这样做?

it("test",function(done){
  a=[1,2,3]
})

a.forEach(function(i){
  it("test1",function(done){
   console.log(i)      
  })
})

3 个答案:

答案 0 :(得分:1)

这不会起作用吗?

it("test",function(done){
    a=[1,2,3]
    a.forEach(function(i){
        it("test1",function(done){
        console.log(i)
    })
})

答案 1 :(得分:1)

var x = [];
describe("hello",function () {

it("hello1",function(done){
    x = [1,2,3];
    describe("hello2",function () {
        x.forEach(function(y) {       
            it("hello2"+y, function (done) {
                console.log("the number is " + y)
                done()
            })
        })
    })
    done()
});
});

答案 2 :(得分:0)

怎么样:

emulator @Nexus72012 -wipe-data -verbose -logcat '*:e *:w' -netfast -no-boot-anim -no-audio -no-window

如果您的测试是异步的,则需要向它们添加describe("My describe", function() { let a; it("test1", function() { a = [1, 2, 3]; }); a.forEach(function(i) { it("test" + i, function() { console.log(i); }); }); }); 回调。但是对于使用done的这个简单示例,没有必要。

- 编辑 -

我认为答案是“不,你不能这样做”。我添加了一些console.log()语句来查看发生了什么:

console.log

这就是输出:

describe("My describe", function() {
    let a = [1, 2];

    it("First test", function() {
        console.log('First test');
        a = [1, 2, 3];
    });

    a.forEach(function(i) {
        console.log(`forEach ${i}`);
        it("Dynamic test " + i, function() {
            console.log(`Dynamic test ${i}`);
        });
    });
});

因此,$ mocha forEach 1 forEach 2 My describe First test ✓ First test Dynamic test 1 ✓ Dynamic test 1 Dynamic test 2 ✓ Dynamic test 2 3 passing (7ms) 正在运行整个mocha块并在运行任何describe块之前创建动态测试。在测试开始后,我不知道如何从it块内部生成更多动态测试。

您的数组创建是否必须位于it块内?