2017-05-04 23 views
1

すべての単一テストの前にいくつかのコードを実行する必要があります。 これは、1つのスペックファイルがあれば簡単に解決できます。 main.e2e.tsしかし、巨大なアプリケーションのための1つのスペックファイルを作るのはあまりにも汚いです。分度器 - 各テストの前と各テストの後にコードを実行します。

私は、複数のスペックファイル(例えばlogin.e2e.ts & dashboard.e2e.ts)に私のテストを分離、私はそれぞれの前に、各itスペックファイルの関係なく、後にいくつかのコードを実行したいです。

私はbeforeEach(() => {}afterEach(() => {}で可能であることを知りました。今はすべてのファイルでこれをやっています。しかし、私は、このアプローチのためにもっときれいな解決策が必要だと考えています。

複数のスペックファイルを使用している間に、それぞれitの前後にコードを実行する方法はありますか?

+0

すべてのテスト。 – jonrsharpe

+0

こんにちは@jonrsharpe申し訳ありませんが、どういう意味なのか分かりません。とにかく、すべてのテストファイルを1つのファイルにマージするよう強制されませんか?私が間違っている場合、いくつかの例を挙げることができますか? – Andurit

+0

いいえ、あなたは 'setup.e2e.ts'を置くことができます。' setup.e2e.ts'は文字どおり、各/ allの前後にトップレベルを含んでいます。 – jonrsharpe

答えて

1

共通および共有の前後のメソッドがある場合は、共通のファイルに書き込むことができます。これらの関数をspecファイルにインポートし、beforeEachbeforeAllafterEach、およびafterAllで呼び出します。私はTypeScriptで次のように書いています。あなたがのために実行される最も外側 `describe`s、外` beforeEach`と `afterEach`を持つことができます

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); 
}); 
関連する問題