如何在Jasmine中使用beforeAll函数?(不是coffeeScript)

pha*_*450 25 javascript testing unit-testing jasmine

我需要知道是否有办法包含或使用beforeAll函数或类似的东西,所以我可以登录我的应用程序,然后开始测试.

现在我将我的登录操作放在第一个测试用例(it)中.这不是一个好习惯.

如果有更好的方法来存储我的登录代码,那么使用beforeAll函数请告诉我.

我使用纯粹的Jasmine与任何其他框架(如咖啡脚本或其他框架)无关.

谢谢

and*_*axo 33

现在这更容易了.截至Jasmine 2.1(2014年11月14日发布),beforeAll该框架内置了一个功能.

以下是 2.1中添加的所有内容的发行说明.而这里是文档,解释beforeAllafterAll


j_b*_*ley 4

describe您可以根据需要嵌套任意多个函数。所以你可以做类似的事情...

describe("General Test", function () {

    function login(){
        //This code will run once at he beginning of your script
    };

    login();

    beforeEach(function () {
        //anything in here will apply to everything in each nested describe
    });

    describe("Specific Test", function () {
        //Applied here
    });

    describe("Another Specific Test", function () {
        //And here
    });


});
Run Code Online (Sandbox Code Playgroud)

  • @aaaaaa 实际上,它与文档一致。`beforeAll 函数在描述中的所有规范运行之前仅调用一次`,而描述块内的“naked”将在所有规范文件中的所有规范运行之前运行一次,而不仅仅是在该描述块中运行。例如,如果我想为一个描述块使用一个 mongo 数据库,为另一个描述块使用一个 mongo 数据库,我需要使用 beforeAll() ,否则它们都将使用相同的数据库。 (4认同)
  • 有人可以解释为什么 BeforeAll 函数是必要的吗?如果您可以先运行该函数(如本答案中所示),则似乎是多余的 - 并且也不提供任何额外的语义值。 (3认同)