Mocha - 如何使用 before 块设置变量?
Mocha - How can I set a variable with a before block?
我的例子有
let resort30 = new Resort('Alta');
在文件的顶部,然后在测试用例中使用它,即
let alta = new Visit(resort30, '03/01/2000'); // Note this is before any describe
行得通。但是,如果我在 describe
内和所有 it
之前创建一个 before
或 beforeEach
:
before(function () {
let resort30 = new Resort('Alta');
});
并注释掉原来的声明,那么resort30
就不能被
识别
ReferenceError: resort30 is not defined
at Context.<anonymous> (test/ski_resorts_using_befores.spec.js:52:26)
当我将该变量移动到 before
或 beforeEach
以便所有 it
都可以使用它时,如何让它工作?
我不希望它位于顶部,我希望它在描述范围内,因为我计划在此文件中进行更多描述。即使有 1 个 describe ,我也希望能够将 before
和 beforeEach` 用于我想创建的变量和对象。
您看不到 resort30,因为如果您在函数内部声明它,它的范围仅限于该函数。
let resort30; // declare it at the top level scope of the file
before(function () {
resort30 = new Resort('Alta'); // modify the value here
});
let
仅在已声明的范围或内部范围内可见。这就是为什么它在另一个范围内不被识别的原因。要拥有某种全局变量但作用域为 describe()
块,您需要在块顶部声明它并在 before()
或 beforeEach()
块中初始化:
describe('Test suite', () => {
let resort30 = null;
before(() => {
resort30 = new Resort('Alta');
});
it('should pass', () => {
console.log(resort30);
});
});
我的例子有
let resort30 = new Resort('Alta');
在文件的顶部,然后在测试用例中使用它,即
let alta = new Visit(resort30, '03/01/2000'); // Note this is before any describe
行得通。但是,如果我在 describe
内和所有 it
之前创建一个 before
或 beforeEach
:
before(function () {
let resort30 = new Resort('Alta');
});
并注释掉原来的声明,那么resort30
就不能被
ReferenceError: resort30 is not defined
at Context.<anonymous> (test/ski_resorts_using_befores.spec.js:52:26)
当我将该变量移动到 before
或 beforeEach
以便所有 it
都可以使用它时,如何让它工作?
我不希望它位于顶部,我希望它在描述范围内,因为我计划在此文件中进行更多描述。即使有 1 个 describe ,我也希望能够将 before
和 beforeEach` 用于我想创建的变量和对象。
您看不到 resort30,因为如果您在函数内部声明它,它的范围仅限于该函数。
let resort30; // declare it at the top level scope of the file
before(function () {
resort30 = new Resort('Alta'); // modify the value here
});
let
仅在已声明的范围或内部范围内可见。这就是为什么它在另一个范围内不被识别的原因。要拥有某种全局变量但作用域为 describe()
块,您需要在块顶部声明它并在 before()
或 beforeEach()
块中初始化:
describe('Test suite', () => {
let resort30 = null;
before(() => {
resort30 = new Resort('Alta');
});
it('should pass', () => {
console.log(resort30);
});
});