在测试使用qunit显示一个方法的方法时,避免/捕获/验证Javascript警报 [英] avoid / capture / verify a Javascript alert when testing a method that displays one with qunit

查看:84
本文介绍了在测试使用qunit显示一个方法的方法时,避免/捕获/验证Javascript警报的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚开始使用Qunit,想知道是否有办法捕获/验证/省略警报,例如:

I'm just starting using Qunit and would like to know whether is there a way to capture/verify/omit alerts, For example:

function to_test() {
   alert("I'm displaying an alert");
   return 42;
 }

然后有类似的内容:

test("to_test", function() {
  //in this case I'd like to test the alert.
  alerts("I'm displaying an alert", to_test(), "to_test() should display an alert"); 
  equals(42, to_test(), "to_test() should return 42" );  // in this case I'd like to omit the alert
});

我也接受使用其他单位测试工具的建议。

I'm open to the suggestion of using another unit testing tool as well.

提前致谢!

推荐答案

好吧,看起来像 Sinon.JS 就是你要找的。我之前从未使用它,但我确实回答了你的问题。

Alright, looks like Sinon.JS is what you are looking for. I've never used it before, but I did to answer your question.

你可以用临时函数替换全局函数警报(实际上是window.alert)这将记录本来会显示的消息。

You can replace the global function alert (which is actually window.alert) with a temporary function that will record the message that would have been displayed.

在javascript中很容易做到(window.alert = function(msg){savedMsg = msg;}) 。所以你可以在测试中做到这一点。

It's easy to do in javascript (window.alert = function(msg) { savedMsg = msg; }). So you could do that within your test.

复杂性只来自你运行测试后的清理。那就是你需要 Sinon.JS 的地方与QUnit集成。您需要此集成脚本

The complexity comes only from cleaning up after you've run your test. That's where you need Sinon.JS which can integrate with QUnit. You'll need this integration script.

<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <link rel="stylesheet" href="http://code.jquery.com/qunit/git/qunit.css" type="text/css" media="screen" />
<script type="text/javascript" src="http://code.jquery.com/qunit/git/qunit.js"></script>
<script type="text/javascript" src="sinon-1.1.1.js"></script>
<script type="text/javascript" src="sinon-qunit-0.8.0.js"></script>

<script>

    function to_test() {
      window.alert("I'm displaying an alert");
      return 42;
    }

    $(document).ready(function(){

      module("Module A");

      test("first skip alert test ", function() {

      var stub = this.stub(window, "alert", function(msg) { return false; } );

      equals(42, to_test(), "to_test() should return 42" );  
      equals(1, stub.callCount, "to_test() should have invoked alert one time");
      equals("I'm displaying an alert",stub.getCall(0).args[0], "to_test() should have displayed an alert" ); 

    });

  });
</script>

</head>
<body>
  <h1 id="qunit-header">QUnit example</h1>
 <h2 id="qunit-banner"></h2>
 <div id="qunit-testrunner-toolbar"></div>
 <h2 id="qunit-userAgent"></h2>
 <ol id="qunit-tests"></ol>
 <div id="qunit-fixture">test markup, will be hidden</div>
</body>
</html>

这篇关于在测试使用qunit显示一个方法的方法时,避免/捕获/验证Javascript警报的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆