2016-07-19 10 views
0

私はshared.js共有機能

afterEach(function() { 
    // insert code 
}); 

var foo; 

beforeEach(function() { 
    foo = { 
    bar: [] 
    }; 
}); 

exports = module.exports = {}; 
exports.foo = foo; 

と呼ばれる独自のファイルに次のコードを入れて、私は私が持っているすべてのmocha.jsテストで走ったことにするafterEachbeforeEachをしたいと思います。各テストファイルでは、私はshared.jsが必要でした。

問題は、fooは私のテストの範囲では利用できないようです。 foo.barは定義されておらず、アクセス不能です。 beforeEach()afterEachフックは正常に動作していますが、fooのスコープを正しくエクスポートする方法を理解できません。これは実際のモカ問題よりもNode.js問題のほうが多いかもしれません。

答えて

4

エクスポートされた参照を変更できないという問題があります。あなたのケースでは、fooが初期化されていないので、undefinedをエクスポートしています。 fooを空のオブジェクトで初期化し、後でそれを別のもの/オブジェクトに再割り当てしようとすると、エクスポートされた参照がまだ同じであるため、動作しません。あなたが行うことができます

唯一のものは、(変異)そうのようなエクスポートされたオブジェクトの変更されています

afterEach(function() { 
    // insert code 
}); 

var foo = {}; 

beforeEach(function() { 
    foo.bar = []; 
}); 

exports = module.exports = {}; 
exports.foo = foo; 
+0

'FOOべき.bar'は最終的にどんなファイルでも利用できます。これは 'これを'必要としますか?この共有ファイルを必要とする私のテストで 'foo.bar.push({});'しようとしているので、 'foo is not defined 'を得ます。 – randombits

+0

@randombits require結果を変数に代入する必要がありますエクスポートされたデータにアクセスすることができます。例えば'var shared = require(" ./ shared ");'あなたは 'shared.foo'を通してあなたのモジュールのfooにアクセスできます。 – vincent

0

を使用すると、各テストのコンテキストに固有の何かをしたい場合は、以下のような何かを行うことができます。

afterEach(function() { 
    // insert code 
}); 

beforeEach(function() { 
    this.foo = []; 
}); 

exports = module.exports = {}; 

各テスト後、this.foo、独自にアクセスすることができます。

describe('myTest', function() { 
    it('should do something', function() { 
    this.foo.push("1"); // same 'this' as from beforeEach 
    // ...insert code 
    }) 
}) 
関連する問題