Avoid / capture / check Javascript warning when testing a method that displays one with qunit

I'm just starting to use Qunit and would like to know if there is a way to capture / check / skip alerts, for example:

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

and then enter something like:

 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 am open to using another unit testing tool.

Thanks in advance!

+7
source share
1 answer

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

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

This is easy to do in javascript (window.alert = function(msg) { savedMsg = msg; }) . That way you can do this as part of your test.

Difficulty arises only after cleaning after starting the test. What you need is Sinon.JS , which can integrate with QUnit , you will need this script integration .

 <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> 
+10
source

All Articles