2017-05-04 82 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); 
}); 
相關問題