jasmine_eventually
v1.0.0
Published
Asynchronous matching for Jasmine Test Framework
Downloads
18
Maintainers
Readme
Jasmine Eventually
Asynchronous matching without runs
and waitsFor
.
Usage
describe('jasmineEventually', function() {
it('allows to match asynchronously with implicit polling', function() {
var spy = jasmine.createSpy();
setTimeout(function() {
spy();
}, 100);
expect(spy).eventually.toHaveBeenCalled();
});
});
is equivalent to
describe('jasmineEventually', function() {
it('allows to match asynchronously with implicit polling', function() {
var spy = jasmine.createSpy();
setTimeout(function() {
spy();
}, 100);
waitsFor(function() {
return spy.wasCalled;
});
runs(function() {
expect(spy).toHaveBeenCalled();
});
});
});
eventually
inserts a waitsFor
block which silences the matcher
output and polls its result until it becomed true
.
Here be Dragons
eventually
only works for matchers which use the actual
object
passed to expect
as a reference. The following will not work:
describe('jasmineEventually', function() {
it('can not operate on primitive types', function() {
var elapsed = false;
setTimeout(function() {
elapsed = true;
}, 100);
// WILL NOT WORK
expect(elapsed).eventually.toBeTruthy();
});
});
elapsed
is passed as a value. Setting the variable to true
later
on does not change the value visibile inside the matcher.
Installation
Just link src/jasmine_eventually.js
from your jasmine spec runner
and put this setup somewhere inside your support files:
beforeEach(function() {
jasmineEventually.setup();
});
License
Please fork and improve.
Copyright (c) 2011 Tim Fischbach. This software is licensed under the MIT License.