Skip to content

Pain free acceptance testing of CoffeeScript applications with Rails 3.1+

License

Notifications You must be signed in to change notification settings

DominikGuzei/jasmine-stories

Repository files navigation

Jasmine Stories: Story driven development with Jasmine

Utilizing Jasmine with the addition of Jasmine-species and taking full advantage of the Rails 3.1 asset pipeline. jasmine-stories removes any excuse YOU have for not testing your out of control application.

This project rocks, is a shameless "fork" of jasminerice and uses the MIT-LICENSE.

Headless Testing

See guard-jasmine for details.

guard-jasmine is configured for jasminerice by default. You have to provide the special url of jasmine-stories on the command line: guard-jasmine -u http://127.0.0.1:8888/jasmine-stories

Installation

This is a gem specifically for Rails 3.1. Just include it in your Gemfile:

group :development, :test do
  gem "jasmine-stories"
end

The engine is automatically mounted into your application in the development and test environments. If you'd like to change that behavior, you can override the array JasmineStories.environments in an initializer.

Usage

CoffeeScripts

Create a file spec/javascripts/stories.js.coffee with the following content:

#=require_tree ./stories

This pulls in all your specs from the javascripts/stories directory into Jasmine:

spec/javascripts/stories/*_story.js.coffee
spec/javascripts/stories/*_story.js
spec/javascripts/stories/*_story.js.erb

The Rails 3.1 asset pipeline using Sprockets and Tilt ensure conversion.

As well you can use the #require dependency mechanisms in your specs to pull dependencies. Here's an example spec/javascripts/foo.js.coffee:

#= require foo
#= require bar

feature "Requiring classes with sprockets", ->

  summary(
    'In order to use classes in my specs',
    'As a user',
    'I want to require them with sprockets'
  )

  scenario "Require foo and bar", ->
    
    foo = bar = null
    
    Given "I have required foo and bar", ->
      foo = new Foo()
      bar = new Bar()

    When "I tell foo to jump", ->
      foo.jump()

    Then "bar should have jumped too", ->
      (expect bar.jumped).toBe true

Stylesheets

For including stylesheets in your specs, Jasminerice uses spec/javascripts/spec.css. Use Sprockets directives to include the right css files:

/*
 *= require application
 */

Start server

Now start your server

rails s

Goto

http://localhost:3000/jasmine-stories

and there are your acceptance tests.

Author

About

Pain free acceptance testing of CoffeeScript applications with Rails 3.1+

Resources

License

Stars

Watchers

Forks

Packages

No packages published