2017-05-04 108 views
1

我需要在每次测试之前运行一些代码。 这可能是一个简单的解决方案,如果我有一个单一的规格文件,例如main.e2e.ts,但为大型应用程序制作一个spec文件听起来太脏了。量角器 - 每次测试前和每次测试后都运行代码

我分开我的测试,以多个规范文件(例如login.e2e.ts & dashboard.e2e.ts),但我想每个运行之前一些代码,每个it没有规范文件的事情后。

我发现它可能与beforeEach(() => {}afterEach(() => {},我现在正在做每一个单一的文件。但我相信这种方法必须有更漂亮的解决方案。

有没有办法在使用多个spec文件时在每个it之前和之后运行代码?

+0

你可以有一个'beforeEach'和'的'最外面describe's afterEach',将为运行每次测试。 – jonrsharpe

+0

嗨@jonrsharpe对不起,但我不知道你的意思。难道它不会强制我将所有测试文件合并到单个文件中吗?如果我错了,你能提供一些例子吗? – Andurit

+0

不,您可以放置​​一个'setup.e2e.ts',它在每个/所有之前/之后就包含顶层。 – jonrsharpe

回答

1

如果您在方法之前和之后都有共同的和共享的方法,您可以将其写入一个通用文件。然后将这些函数导入spec文件,并在您的beforeEachbeforeAll,afterEachafterAll中调用它们。我在TypeScript中编写了以下代码。

common.ts

// import some protractor global objects 
import { browser } from 'protractor'; 

export let beforeMethod =() => { 
    // do some method 
    browser.get('/'); 
} 

export let beforeAsyncMethod = (done) => { 
    // do something that is async 
    done(); 
} 

export let afterMethod =() => { 
    // do some method 
} 

login.e2e-spec.ts

import { beforeMethod, beforeAsyncMethod, afterMethod } from './common'; 

describe('login',() => { 
    // do some setup 
    beforeEach(beforeMethod); 
    beforeEach(beforeAsyncMethod); 

    it('should do your test',() => { 
    // your amazing test. 
    }); 

    afterEach(afterMethod); 
}); 
相关问题