beforeAll和beforeEach套件,而不是spec

我正在使用量angular器5编写一些e2etesting。我想要实现的是执行共享设置和特定设置(对于testing组)的整个testing。

我有以下代码:

Base.ts:

beforeAll(() => { console.log("before all base"); }); beforeEach(()=> { console.log("before each base"); }); afterEach(() => { console.log("after each base") }); afterAll(() => { console.log("after all base"); }); 

TestSuite1.ts:

 require('./Base'); describe("test suite 1", () => { beforeAll(() => { console.log("before all 1"); }); beforeEach(()=> { console.log("before each 1"); }); afterEach(() => { console.log("after each 1") }); afterAll(() => { console.log("after all 1"); }); it("test 1", () => { console.log("test 1 1"); }); it("test 2", () => { console.log("test 1 2"); }); }); 

TestSuite2.ts:

 require('./Base'); describe("test suite 2", () => { it("test 1", () => { console.log("test 2 1"); }); it("test 2", () => { console.log("test 2 2"); }); }); 

并conf.ts:

 var testsTimeout = 3600000; export let config: Config = { framework: 'jasmine', capabilities: { browserName: 'chrome' }, specs: ['test/TestSuite1.js', 'test/TestSuite2.js'], seleniumAddress: 'http://localhost:4444/wd/hub', noGlobals: true, allScriptsTimeout: testsTimeout }; 

我想获得以下输出:

 before all base before each base before all 1 before each 1 test 1 1 after each 1 before each 1 test 1 2 after each 1 after all 1 after each base before each base test 2 1 test 2 2 after each base after all base 

在我before/after all以及before/after each ,我将它们分组在一起并打印如下:

 before all base before all 1 before each base before each 1 test 1 1 after each 1 after each base .before each base before each 1 test 1 2 after each 1 after each base .after all 1 before each base test 2 1 after each base .before each base test 2 2 after each base .after all base 

是否有可能获得我期望的执行stream程?

       

网上收集的解决方案 "beforeAll和beforeEach套件,而不是spec"

这是可能的,你的函数将在你的套件中的所有内容之前/之后执行。

想法是把beforeAll() afterAll()beforeEach() afterEach()放到量angular器的configuration文件中 – 放到onPrepare()部分。

这可能看起来像这样:

 module.exports.config = { //somewhere in your config onPrepare: function () { beforeEach(function () { //This will be executed before EVERY 'it' in each specfile }) beforeAll(function () { //This will be executed before EVERY 'describe' in each specfile (even before nested describes) }) } } 

另外检查量angular器configuration中的其他选项: onComplete() afterLaunch() – 他们可能会更好地为你工作,而不是茉莉花function

你可能想看看茉莉花记者,以防你需要以某种方式处理testing名称,testing结果,套件的结果,并可能是一个很好的替代之前/之后的function。 他们很容易创build和使用,请检查:

https://jasmine.github.io/edge/custom_reporter.html

我想这是如何量angular器的devise工作。 有一个问题是为了跟踪beforeAll()beforeEach()父代describe块

在这里查看完整的讨论 。

对于当前的实现(如果我理解正确的话),只有一个beforeAll是真正有意义的,它应该在任何describe块之外,或者在最外面的describe块的顶部。 也就是说,在我的第二个之前把它放在它所在的位置是没有意义的。