2017-05-25 15 views
0

私のitブロックが配列を生成するコードを記述しています。ループをループして同じ記述ブロックでいくつかのテストを行うのが好きです。私はその配列をファイルに書き出してアクセスしようとしましたが、それらのテストは最初に実行されてから書き出します。モハテストの外でaにアクセスすることはできませんが、私はそれを行うためにとにかくあるかどうかを知りたいですか?itブロックで作成された配列をループします。

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

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

あなたが記述の下に宣言したにも関わらず(ブロック)モカ枠組みの中で – Fahadsk

答えて

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() 
}); 
}); 
1

この作品はありませんか?

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

外の変数にアクセスしようとしています) –

0

方法について:

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()を使用する必要はありません。

--EDIT--

私は答えは「いいえ、あなたはこれを行うことはできません」だと思います。私は何が起こっているか確認するために、いくつかの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ブロック内からより動的なテストを生成する方法がわかりません。

あなたのアレイの作成はitブロック内になければなりませんか?

+0

カントのアクセス、それの「」外を(動作しません()は()それにスコープ –

+0

上記の私の編集を参照してください。残念ながら、あなたが 'it'ブロックの外に配列を作成できない限り、私はあなたが固執していると思います... –

+0

私は" a "がブロック内の関数から動的に生成されるテストケースを持っています。その次のテストを作成する –

関連する問題