Javascript 使用嵌套的描述块调用beforeach和afterEach

Javascript 使用嵌套的描述块调用beforeach和afterEach,javascript,jasmine,Javascript,Jasmine,我试图在我正在编写的jasmine测试套件的每个嵌套描述之前和之后调用一些逻辑 我现在有这样的事情: descripe('Outer descripe',function(){ beforeach(函数(){ 登录(); someOtherFunc(); }); 在每个(函数()之后){ 注销(); }); 描述('内部描述',函数(){ 它('规范A',函数(){ 期望(真),期望(真); }); 它('spec B',函数(){ 期望(真),期望(真); }); }); }); 我在我的内

我试图在我正在编写的jasmine测试套件的每个嵌套描述之前和之后调用一些逻辑

我现在有这样的事情:

descripe('Outer descripe',function(){
beforeach(函数(){
登录();
someOtherFunc();
});
在每个(函数()之后){
注销();
});
描述('内部描述',函数(){
它('规范A',函数(){
期望(真),期望(真);
});
它('spec B',函数(){
期望(真),期望(真);
});
});
});
我在我的内部描述中为每个
it
调用了
beforeach
afterEach
之前的
之后的
中找到了我的函数。我只希望这些被称为每一个内部描述我在外部的一次


这是可能的吗?

我认为你应该使用“之前”和“之后”来描述内部的规范。以下摘自茉莉花网站:

beforeAll函数仅在中的所有规范之前调用一次 descriple运行,并且在所有规范之后调用afterAll函数 结束。这些功能可用于加快测试套件的速度 昂贵的安装和拆卸

然而,在使用之前和之后都要小心!因为他们不是 在规格之间重置,很容易在规格之间意外泄漏状态 你的规格,使他们错误地通过或失败


为了实现这一点,我定义了一个公共函数,然后在每个嵌套的
描述的
之前的
之后的
中引用它

describe('Wrapper', function() {
  var _startup = function(done) {
    login();
    window.setTimeout(done, 150);
  };

  var _shutdown = function() {
    logout();
  };

  describe('Inner 1', function() {
    beforeAll(_startup);
    afterAll(_shutdown);
  });

  describe('Inner 2', function() {
    beforeAll(_startup);
    afterAll(_shutdown);
  });

  describe('Inner 3', function() {
    beforeAll(_startup);
    afterAll(_shutdown);
  });
});

这似乎是可用的最干净的解决方案。

谢谢,但我已经看过此文档,在我的场景中没有帮助。我知道这已经晚了4年,但对于未来的读者,@Ram Pasala所说的正是我们需要的。或者,您可以将
放在父描述之外的每个
之前。