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

时间:2013-07-25 04:35:10

标签: asp.net-mvc jquery-ui jquery nunit vs-unit-testing-framework

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

1 个答案:

答案 0 :(得分: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>

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