STATUS: Not maintained
Asynchronous matching without runs and waitsFor.
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.
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.
Just link src/jasmine_eventually.js from your jasmine spec runner
and put this setup somewhere inside your support files:
beforeEach(function() {
jasmineEventually.setup();
});Please fork and improve.
Copyright (c) 2011 Tim Fischbach. This software is licensed under the MIT License.