使用Coded UI测试项目不会触发Jquery AJAX成功

use*_*088 12 asp.net-mvc jquery nunit jquery-ui vs-unit-testing-framework

我试图在asp.net MVC4应用程序上运行Coded-UI测试项目.该应用程序包含涉及的各种ajax调用.当我手动测试它,它工作正常,但当我使用编码ui测试项目测试它时,它会中断,因为在ajax调用中,回调函数不会被调用.谁能告诉我这里我缺少什么?提前致谢.

Ros*_*Nab 20

出了什么问题

Microsoft的Coded UI浏览器注入javascript来填充XMLHttpRequest对象以进行跟踪.页面中的任何ajax调用都将使用此填充程序而不是真正的XMLHttpRequest.垫片假定您的完成回调附加到XMLHttpRequest的onreadystatechange属性,但jQuery 2.0使用新的onload和onerror事件,因此垫片永远不会调用回调.

解决方法

解决方法是将以下内容添加到测试项目的App.config文件中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="WebWaitForReadyLevel" value="3"/>
  </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

将WebWaitForReadyLevel设置为3可阻止Coded UI WebBrowser注入javascript以跟踪ajax调用和计时器.jQuery将获得一个真正的XMLHttpRequest,你的ajax回调将再次运行.