How can I have a beforeAll function in Jasmine ? (Not coffeeScript)
我需要知道是否可以包含或使用beforeAll函数或类似的方法,因此我可以登录到我的应用程序,然后开始测试。
现在,我将登录操作放在第一个测试用例(it)中。这不是一个好习惯。
如果还有其他更好的方法来存储我的登录代码,那么可以使用beforeAll函数,告诉我有关信息。
我正在使用与其他框架(例如coffee-script或其他框架)无关的纯Jasmine。
谢谢
现在,这变得容易得多。从Jasmine 2.1(2014年11月14日发布)开始,框架中内置了beforeAll函数。
以下是发行说明,其中包含2.1中添加的所有内容。这是解释beforeAll和afterAll
的文档
您可以根据需要嵌套任意多个describe函数。所以你可以做类似...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 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
});
}); |
- 这是否意味着beforeEach将在每个嵌套的Describe之前运行?还是之前的每一件事?
-
它将在每个嵌套的describe中的每个it函数之前运行
-
那不是我所需要的。在所有it之前,我需要一些东西来运行一些东西
-
您可以首先发布要运行的登录代码吗?可能有一种使用此方法将其合并的方法。但是,我从未见过像您描述的那样具有所有功能。此外,对相关问题的这个答案可能会有所帮助... stackoverflow.com/a/24046016/3711699
-
您是要让它多次运行还是可以在Jasmine脚本开始时仅运行一次?因为如果是这样,您可以在开始任何描述函数之前编写代码。我将编辑代码以向您展示我的意思。
-
是的,确切地说,我需要在所有it之前先执行make运行登录操作。我会尽力的。谢谢
-
那对您有用吗?现在,我设置答案的方式可以将代码放入login()函数中,该函数将在脚本开始时运行一次,或者可以将代码放入beforeEach中,并且该代码将在每个it之前运行。这些都会为您工作吗?
-
有人可以解释为什么甚至需要BeforeAll函数吗?如果您只能先运行函数(如此答案所示),则似乎是多余的,并且也不提供任何额外的语义值。
-
@aaaaaa beforeAll()是必需的,因为在此示例中,login()将在所有规范文件中的所有测试用例之前运行。但是,您真正需要的是在运行任意describe块中的所有测试之前运行login()。假设您还有另一个要求用户注销的规范,因此它将调用logout()。这两个文件中的所有测试将以登录或注销的方式运行,具体取决于首先加载的规范。
-
@JCSG-您的评论与jasmine的文档不一致,后者将beforeAll放在describe块中,并且实现了与j_buckley的答案相同的行为。
-
@aaaaaa实际上,它与文档相对应。 The beforeAll function is called only once before all the specs in describe are run,而describe块中的" naked"将在所有spec文件中的所有spec运行之前运行一次,而不仅是在该describe块中。例如,如果我想对一个describe块使用一个mongo数据库,而对另一个describe块使用一个mongo数据库,则需要使用beforeAll(),否则它们都将使用同一数据库。
-
是的,你是完全正确的。很抱歉。现在就对其进行测试,我会更好地了解流程。非常感激。
您可以添加此程序包,该程序包向Jasmine添加beforeAll()和afterAll()。
https://github.com/nonplus/jasmine-beforeAll
请使用下面的代码并在beforeAll语句中配置您的设置。
1 2 3 4 5 6 7 8
| describe("Top", function() {
beforeAll(function() {
console.log("Example 1 Setup");
});
it('xyz',function(){
console.log('Hi!')
});
}); |