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()
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和使用,请检查:
我想这是如何量angular器的devise工作。 有一个问题是为了跟踪beforeAll()
在beforeEach()
父代describe块
在这里查看完整的讨论 。
对于当前的实现(如果我理解正确的话),只有一个beforeAll是真正有意义的,它应该在任何describe块之外,或者在最外面的describe块的顶部。 也就是说,在我的第二个之前把它放在它所在的位置是没有意义的。