CoffeeScript sure is interesting and I had a very positive experience trying it with Jasmine BDD testing kit. With Guard autocompiling the .js files, it becomes a charm on Rails 3.
Jasmine BDD in CoffeeScript on Vimeo.
This setup guide from pivotallabs.com coupled with this updated gist you will have the infrastructure set up in no time. Any change to the CoffeeScript source or spec files should trigger the Guard to recompile the JavaScript.
To compile "bare" js see this tip to add :bare => true to your Guardfile.
$ rake jasmine
Here is a good example of writing a CoffeeScript spec. More spec examples will eventually sprout up, undeniably. And naturally, the Jasmine wiki is a good source of information.
class Timer
constructor: (@timer_json) ->
@start_date = new Date(@timer_json.start_date)
@end_date = new Date(@timer_json.end_date)
[@start_hours, @start_minutes] = @timer_json.start_at.split(":")
[@end_hours, @end_minutes] = @timer_json.end_at.split(":")
And the corresponding test:
timer_spec.coffee
describe 'timer-parser', ->
timer_data = {
start_date: "2011/06/20", end_date: "2011/06/25",
start_at: "12:00", end_at: "04:04"
}
it 'should parse properly', ->
timer_json = JSON.parse JSON.stringify timer_data
timer = new Timer(timer_json)
expect(timer.start_date).toEqual new Date "2011/06/20"
expect(timer.end_date).toEqual new Date "2011/06/25"
expect(timer.start_hours).toEqual "12"
expect(timer.start_minutes).toEqual "00"
expect(timer.end_hours).toEqual "04"
expect(timer.end_minutes).toEqual "04"
