私は、を介してこれを考えてSOの質問を読んでみましたし、私は少しのテスト作成しました:ジャスミンでは、beforeAll()とletの間に違いはありますか?
describe("let",() => {
let x = 1;
it("",function() {
console.log(x + "<< it");
console.log(y + "<< it");
});
});
describe("beforeAll()",() => {
let x;
let y = 2;
beforeAll(() => {
x = 1;
});
it("",function() {
console.log(x + "<< it");
console.log(y + "<< it");
});
});
出力は次のとおりです。
LOG: '1<< it'
LOG: 'undefined<< it'
LOG: '1<< it'
LOG: '2<< it'
これは、両方のbeforeAllように私には意味を()とletの両方が包含関数にスコープされ、含まれるいずれかが実行される前に実行されます。it
let
(と実際にはvar
)と私はJavaScriptのスコープを理解することで期待される結果が得られます。
y
がit
の外部で実行されるため、最初のテストで定義されるRSpecではこれは起こりません。 (これは私が求めている主な理由です。可能であれば、let
が不要なコードをクリーンアップしたいのですが、RSpecの二日酔いが不必要な冗長性につながるのではなく)。
beforeAll()
とlet
の間に私の知りません(私のテスト/理解の欠陥は難読化されているかもしれません)の間に違いがありますか?