Mocha Tests For Asynchronous Functions
Solution 1:
(Answer in coffeescript. If you'd like to convert coffee to js use http://coffeescript.org/, then the Try CoffeeScript tab.)
If you're testing asynch code you'll need to use the done
pattern:
describe "User", ->
describe "#save()", ->
it "should save without error", (done) ->
user = new User("Luna")
user.save done
http://visionmedia.github.io/mocha/ under "Asynchronous code". Looks like createJob is returning true because the test is zipping through the code to send the post etc. and saying "yep, I sent all that stuff like you asked!".
I'd recommend Martin Fowler's article on testing asynch js code with mocha: http://martinfowler.com/articles/asyncJS.html.
I've got a chunk of code that tests retrieval of a user from the database (using sinon for stubbing). The real code connects to the db then calls the onSuccess with the user's configuration: onSuccess(config)
describe 'Config', ->
orgId = 'a'
errorHandler = ((msg) -> (throw msg))
beforeEach ->
readConfig = sinon.stub(sdl , 'getConfig')
readConfig.callsArgOnWithAsync(2, configSource, JSON.parse(jsonConfig))
afterEach ->
configSource.getConfig.restore()
... later
configSource.getConfig('520bc323de4b6f7845543288', errorHandler, (config) ->
config.should.not.be.null
config.should.have.property('preferences')
done()
)
Solution 2:
Don't consider this like an answer to the op but a bonus for the one marked as correct.
Just to complete @jcollum answer here's the Javascript version of him code:
describe('User', function(){
describe('#save()', function(){
it("should save without error", function(done){
var _user = new User("Moon");
_user.save;
done();
});
});
});
It's pretty evident but maybe some newbies would need this addendum.
Post a Comment for "Mocha Tests For Asynchronous Functions"