We use mocha and chai and sinon and sinon-chai for testing our EmberJS applications.
If you have functionality that needs to be tested by changing form elements directly (e.g. $(".class").val('hello')) but requires asynchronous behaviour, such as updating the underlying Ember model, you can use andThen(function) to chain these asynchronous events:
describe 'interface', -> it 'can change the underlying model', (done) -> @timeout 5e3 # set timeout to 5s # visit the application root visit '/' Ember.run -> expect(find(".date-input")).not.to.be.empty expect(find(".time-type")).not.to.be.empty # defaults expect(find(".time-type").val()).to.equal("") expect(find(".date-input").val()).to.equal('original') # now change $(".time-type").val('change') $(".time-type").change() # trigger on('change'), this will update model.date-input andThen -> # should now have changed expect(find(".date-input").val()).to.equal('updated') done()