11

asp.net MVC4アプリケーションでCoded-UIテストプロジェクトを実行しようとしています。 このアプリケーションには、さまざまなajax呼び出しが含まれています。 私はそれを手動でテストすると正常に動作しますが、コード化された-uiテストプロジェクトを使用してテストすると、 ajax呼び出しでコールバック関数が呼び出されないため、ブレークします。 誰でも私にここに何が欠けているか教えてもらえますか? ありがとうございます。Coding UIテストプロジェクトでJQuery AJAXの成功がトリガーされない

+0

ようこそStackOverflow!関連するコードを投稿した場合、その説明と一緒に何がどのように*正確に破られるかを説明すると、より役に立ちます。 –

+0

私は、ページ区切り$ .ajaxの成功に対してユーザーアクションを追加することができます。これはjQuery 2.0のみに適用されます。 –

答えて

19

間違っ

何が起こっているMicrosoftのコード化されたUIブラウザは、トラッキングのためのXMLHttpRequestオブジェクトをシムするためにJavaScriptを注入します。ページ内のどのajax呼び出しでも、実際のXMLHttpRequestの代わりにこのシムが使用されます。シムは完了コールバックがXMLHttpRequestのonreadystatechangeプロパティにアタッチされているとみなしますが、jQuery 2.0は新しいonloadイベントとonerrorイベントを使用するため、コールバックはシムによって呼び出されません。

回避策

回避策は、あなたのテストプロジェクトのApp.configファイルに以下を追加することです:3にWebWaitForReadyLevelを設定

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="WebWaitForReadyLevel" value="3"/> 
    </appSettings> 
</configuration> 

が注入からコード化されたUI WebBrowserコントロールを停止AJAX呼び出しとタイマーを追跡するためのjavascript jQueryは実際のXMLHttpRequestを取得し、あなたのajaxコールバックは再び機能します。

+0

ライフセーバー。私はウェブからこれについて最小限の情報を見つけています - あなたは問題や解決策の参考資料がありますか? – Andyrooger

+0

も参照:https://fluentbytes.com/how-to-prevent-codedui-tests-from-breaking-angular-ajax-calls/。 – Appulus

+0

jQuery 2.0.0では動作しますが、2.0.2では動作しません –

関連する問題