What is different about your framework than the others that are out there?

http://seleniumhq.org/
http://www.jsunit.net/
http://docs.jquery.com/Qunit

Eric




On Tue, Dec 21, 2010 at 3:30 AM, Garrett Smith <[email protected]>wrote:

> Hey all,
>
> I'm working on a unit testing framework for unit testing javascript
> abstractions that run in browsers: domunit.
>
> https://github.com/GarrettS/ape-javascript-library/downloads
>
> The framework uses declarative style object literals for testing; each
> test is property name that starts with "test". A test case has an
> optional setUp and tearDown.
>
> After incljuding domunit.js, you write a test case, like so:
>
> var testCase = {
>  setUp : function() { },
>  tearDown : function() {},
>  "test Number.prototype.valueOf" : function() {
>   var actual = new Number(1).valueOf();
>   TestRunner.assert( Constraints.areSame(actual, 1) );
>  }
> };
>
> And then:
>
> runTests( testCase );
>
>  - or -
>
> runTests( [testCase1, testCase2, testCas3] );
>
> Each test requires at least one call to TestRunner.assert unless you
> call `TestRunner.exitEarly`. TestRunner.exitEarly is intended to
> provide results to the reports. The TestReporter doesn't currently
> report early exits, but the idea is that when you have a test that
> needs to verify a condition that exists in certain environments, that
> you can expect one assertion, but in environment that don't support
> whatever it is you want to test, you can exit early.
>
> testSrcElement : function() {
>  var srcElement;
>  function clickHandler() {
>    srcElement = window.event && window.event.srcElement || null;
>  }
>  document.onclick = clickHandler;
>  Mouse.click( document );
>  if(! ev ) {
>    TestRunner.exitEarly(
>    "window.event.srcElement not supported in this environment.");
>  }
>  TestRunner.assert( Constraints.areSame(srcElement, document) );
> }
>
> TestRunner.assert takes a function. So for example,
> `Constraints.isTrue( true )` is a function call that returns a
> function. This way, you can write as many of your own constraints as
> you want, e.g. `TestRunner.assert( Canvas.hasImage( img ) );`
> `TestRunner.assert` will call the constraint function that it is
> passed. If that constraint function returns a non-empty string, then
> it is treated as an error message and `assert` throws, causing the
> test to fail.
>
> TestRunner also has `wait` and `waitForCondition` methods.
>
>  testCrap : function() {
>   TestRunner.wait(
>     function() {
>       TestRunner.assert( Constraints.isTrue( true ) );
>     }, 10);
>  },
>  ...
>
>  "test ajax response correct"  : function() {
>  var done;
>  ajax.oncomplete = function() {
>    done = true;
>  };
>
>  function ajaxDone() {
>    return done;
>  }
>  function verifyResponse() {
>    TestRunner.assert(Constraints.areSame( ajax.responseText, "1") );
>  }
>  TestRunner.waitForCondition( ajaxDone, verifyResponse );
>  },
>
> Additionally, there's ways to simulate mouse events using declarative
> style:
>
> Mouse.click( document, {clientX : 10, shiftKey : true } )
>
>  - with sensible defaults, e.g. when `altKey` is omitted, it is
> `false`, when `bubbles` is omitted, `bubbles` is true, etc.
>
> Though `event.button` has a sensible default `0`, that propagates a
> w3c mistake of event.button === 0 being specified to mean that the
> left mouse button is depressed -- but there is no code for when no
> button is depressed. When no button is depressed, `event.button`
> returns `0`, which is the same value used to indicate left button. So
> `event.button === 0` means either left button or no button. Seems like
> a glaring oversight to me.
>
> There is also the sore spot of not being able to set the `toElement`
> or `fromElement in MSIE. I already posted about that on the jsmentors
> mailing list, when it was a good mailing list, and before the whole
> thing moved to GG.
>
> Anyway, there's other complexities that I was able to solve nicely.
> domunit's free to download and use. Go download it and start testing.I
> hope you like it.
> --
> Garrett
>
> --
> To view archived discussions from the original JSMentors Mailman list:
> http://www.mail-archive.com/[email protected]/
>
> To search via a non-Google archive, visit here:
> http://www.mail-archive.com/[email protected]/
>
> To unsubscribe from this group, send email to
> [email protected]<jsmentors%[email protected]>
>

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/[email protected]/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/[email protected]/

To unsubscribe from this group, send email to
[email protected]

Reply via email to