The cuke_data gem provides a single class, CukeData. CukeData.method_missing is defined such that you can call CukeData.whatever_you_want and it will return an instance of CukeData. The instance maintains a hash of values and raises an exception if you attempt to access a key that isn't set.
.foo === .foo #=> true .bar === .bar #=> true .foo === .bar #=> false .baz[:bam] = :foo .baz[:bam] #=> :foo .baz[:never_set] # raises RuntimeError
Using CukeData, if you have the following steps in your feature definition:
Given there is a user named "Bob" And there is an account "My Savings" And the user "Bob" has access to "My Savings"
The step definitions can look like:
Given /^there is a user named "([^\"]+)"$/ do |name| .users[name] = User.create!(:name => name) end Given /^there is an account "([^\"]+)"$/ do |name| .accounts[name] = Account.create!(:name => name) end Given /^the user "([^\"]+)" has access to "([^\"]+)"$/ do |user_name, account_name| .accounts[account_name].grant_access(.users[user_name]) end
Note on Patches/Pull Requests
Fork the project.
Make your feature addition or bug fix.
Add tests for it. This is important so I don't break it in a future version unintentionally.
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
Send me a pull request. Bonus points for topic branches.
Copyright © 2010 John Wilger. See LICENSE for details.