Jasmine 2.0: refactoring out 1.3's runs() and waitsFor()
jasmine, javascript
Solution
It is possible to use a setTimeout in your it() block.
it("is asynchronous", function(done) {
var isItDone = false;
$.ajax('/some/url').success(function() { isItDone = true; });
setTimeout(function(){
expect(isItDone).toBeTrue();
done(); // call this to finish off the it block
}, 500);
});
However, I found that that slowed down my test suite dramatically so I created my own extension which recreates the polling functionality that waitsFor provided.
https://gist.github.com/abreckner/110e28897d42126a3bb9
Problem
The recently released Jasmine 2.0 removes the waits functions and the `runs()` from the Async Jasmine 1.3. I have old 1.3 tests I'd like to transition to the new style. For the waits, in most cases it seems like you can write `beforeEach()` and `afterEach()` carefully for the same effect. What is the best way to reproduce the `runs()` which simply executes the contained functions sequentially? My first try: ``` runs(function() { expect(true).toBe(true); } ``` becomes ``` (function() { expect(true).toBe(true); })() ```