2016-07-15 21 views
3

私はノックとsinonjsのような他のライブラリを使ってHTTPリクエストを模擬しようとしましたが、成功しませんでした。Nightwatch Mock HTTPリクエスト

import nock from "nock" 

const URL = "http://localhost:8080/" 

const SIGN_IN_PATH = "/fake/users/sign_in.json" 

export const signInRequest = (status, payload = {}) => { 
    return nock(URL).get(SIGN_IN_PATH).reply(status, payload) 
} 

-

import { signInRequest } from "./../../utils/fakeRequests" 

const doLogin = (browser) => { 
    return browser 
      .url("http://localhost:8080") 
      .waitForElementVisible('form', 1000) 
      .setValue('input[name=email]', '[email protected]') 
      .setValue('input[name=password]', 'somepass') 
      .click('button[type=submit]') 
      .pause(500) 
} 

export default { 
    "Do login and shows error message": (browser) => { 
    signInRequest(403) 

    doLogin(browser) 
     .waitForElementVisible('.error', 1000) 
     .end() 
    } 
} 

ナイトウォッチとその可能モックhttpリクエスト?

+0

同じ問題がありますか? –

+2

残念ながら、そうではありません。 :(。この問題を解決するには、モックサーバーをアップし、テスト環境でモックサーバーアドレスを使用するようにURL値を変更してください。 –

+1

多分、これはあなたを助けることができます:http://stackoverflow.com/questions/38353886/夜行性のない夜勤のセレン –

答えて

0

Nightwatch.jsテストツールをエンドツーエンドである - ので、ポイントは実際のUIだけでなく、彼らはライブも(と嘲笑ない)だろう呼び出すAPI だから多分あなたはcasper.jsのような統合テストのために設計されたフレームワークを探しているということです(http://casperjs.org/)またはnightmarehttps://github.com/segmentio/nightmare

しかし、私は(あなたがそれを保証するいくつかの奇妙なユースケースを持っている場合) はあなたがノックHTTP呼び出します(テストの前にあることを確認してください信じてnockでなんとかする必要がありますnightwatchでHTTP呼び出しをあざけります彼らはbeforeブロックにあることもできます)。例:

module.exports = { 
    'test abc' : function (browser) { 
    nock('http://example.com') 
     .get('/users') 
     .query({name: 'martin'}) 
     .reply(200, {results: [{id: '123'}]}); 

    // do test stuff 
    }, 
}; 

あなたの例で考えられる問題は、UI全体を嘲笑して - nightwatchが何らかの形で同じドメインがインターセプトされないことがあるということです。異なるドメイン(またはポート)にUIとAPIを設定すると、問題が解決される可能性があります。