2

送信ボタンがクリックされたときに適切なフォームアクションが実行されることを確認しようとしています。ChromeでKarma(以前のtestacular)を使用してテストを実行しsinon、POSTリクエストをキャプチャするための偽のサーバーを作成するために使用します。キャプチャされていないようです

<form action="/authenticate_open_id" method="POST">
<label>Or sign up with:</label>
<input type="hidden" name="openid_identifier" value="https://www.google.com/accounts/o8/id"/>
<input type="hidden" name="return_url" value="/"/>
<input id="signup_with_google" type="submit" value="Google Account"/></form><

テストコード

server = sinon.fakeServer.create()
server.autoRespond = true
server.respondWith 'POST', '/authenticate_open_id', [302, {}, '']

view.$el.find('#signup_with_google').click()
waitsFor ->
    server.requests.length > 0
, 'server has not been called', 100                    
runs ->
    console.log 'server', server.requests

偽のサーバーがそのリクエストをキャプチャすることはありません(ただし、同様のコードはajaxによって開始されたリクエストに対して機能します)。ただし、テストスイートを実行するChromeブラウザでエラーが発生します

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:9876/authenticate_open_id

、それで、いくつかの要求が行われたように見えますが、偽のサーバーはそれをキャプチャできませんでしたか?

ここに画像の説明を入力してください

4

1 に答える 1

2

偽のサーバーはajaxリクエストに対してのみ機能するため、これは機能しません。偽のサーバーが行う唯一のことは、XmlHttpRequestオブジェクトをモックし、渡された成功/エラー関数を呼び出すことです。したがって、あなたの場合、ボタンをクリックすると、新しい投稿URLでページがリロードされます。

于 2013-03-27T11:07:33.560 に答える