45

JasmineJS でテストを作成する場合、同様の beforeEach/afterEach コードを持つ多くのテストがあります。

JasmineJS テスト スイートを使用して継承モデルを実装する方法はありますか?

すべてのテストを 1 つのグループにまとめることができますdescribeが、この場合、すべてのテストを含む 1 つの巨大な JS ファイルで終了します。

各ページのテストを分割したいと思います。

次に例を示します。

describe('Services Page', function() {

    beforeEach(function() {
        login_as_admin()
    })

    beforeEach(function() {
        browser().navigateTo('/services')
    })

    if('Some test for services page', function() {})

    afterEach(function() {
        logout()
    })

})


describe('Administrators Page', function() {

    beforeEach(function() {
        login_as_admin()
    })

    beforeEach(function() {
        browser().navigateTo('/administrators')
    })

    if('Some test for administrators page', function() {})

    afterEach(function() {
        logout()
    })

})
4

4 に答える 4

22

すべてのスイートに対してこれを行いたい場合は、beforeEachまたはafterEach関数を に登録できtopSuiteます。

jasmine.getEnv().topSuite().beforeEach({fn: function() {
   //log in as admin
}});

一部のスイートにのみ適用する場合は、サブスイートを使用できます。

describe("as_admin", function() {
  beforeEach(function() {
    //log in as admin
  });

  describe('Services Page',function() {...});
  describe('Administrators Page',function() {...});

}
于 2015-05-13T09:03:13.923 に答える
5

Jasmine を使用すると、通話の外に出たり外しbeforeEachたりできます。このようにして、すべての仕様に対してグローバルなセットアップとティアダウンを行うことができます。あなたの呼び出しは、グローバル ティアダウンの適切な候補のようです。すべてのスペックが管理者としてログインしている場合は、それをグローバル スコープに移動することもできます。afterEachdescribelogout()

すべてではないが一部の仕様で使用されているものについては、あなたのlogin_as_admin()ようなメソッドを持つことは、そのロジックを 1 か所に統合​​するための最良の方法のように思えます。

于 2014-01-25T20:27:11.110 に答える