Hello, Is there any way to test controllers using cucumber. I was doing it with rspec but since cucumber''s description is good how can i proceed testing it with cucumber? For e.g. I have a scenario of user creation like Feature: User Scenarios Scenario: Successfull creation of user Given a new user When the user fill all the mandatory details Then that user should get created And success message should get displayed and email should be sent for activation In step definition: Given /^a new user$/ do end When /^the user fill all the mandatory details$/ do end When /^that user should get created$/ do end Then /^success message should get displayed and email should be sent for activation$/ do end In this how i need to call the users controller and in that create method. Also i searched in the net but didn''t found any examples for cucumber testing controllers. Please suggest -- Posted via http://www.ruby-forum.com/.
On 29 Jan 2010, at 11:53, Amit Kulkarni wrote:> Hello, > Is there any way to test controllers using cucumber. > I was doing it with rspec but since cucumber''s description is good how > can i proceed testing it with cucumber?Hi Amit. There''s a Cucumber specific mailing list at http://groups.google.com/group/cukes?pli=1, which is a better place to ask Cucumbetr questions. With Cucumber, you don''t tend to test controllers directly, instead you''re testing the whole app, much like Rails'' own Integration Tests.> For e.g. > I have a scenario of user creation like > Feature: User Scenarios > > Scenario: Successfull creation of user > Given a new user > When the user fill all the mandatory details > Then that user should get created > And success message should get displayed and email should be sent > for activationSo, your example might be implemented like this: Given /^I''m on the new user page$/ do visit new_user_path end When /^I fill all the mandatory details$/ do fill_in("name", :with =>"Joe") end Then /^that user should get created$/ do User.find_by_name("Joe").should_not be_nil end> In this how i need to call the users controller and in that create > method. > Also i searched in the net but didn''t found any examples for cucumber > testing controllers.There are lots of examples on the Cucumber site http://cukes.info/ HTH Matt -- Matt Patterson | Design & Code <matt at reprocessed org> | http://www.reprocessed.org/
Oh ok.>From your code it seems that we are checking the whole app as youmentioned. I have tested controllers using rspec. So i am not getting which is better to use. Since with Rspec we test the objects and here using cucumber(good for writing scenarios and understanding)we are testing the GUI part(using webrat). So which is good to use and more effective -- Posted via http://www.ruby-forum.com/.
On Feb 1, 2010, at 1:30 AM, Amit Kulkarni wrote:> > Oh ok. >> From your code it seems that we are checking the whole app as you > mentioned. > I have tested controllers using rspec. > So i am not getting which is better to use. > Since with Rspec we test the objects and here using cucumber(good for > writing scenarios and understanding)we are testing the GUI part(using > webrat). > So which is good to use and more effectiveFrom my perspective, and this is just opinion, it depends on how granular you want your test and how fast it has to run. If you want to test the whole stack, then Cuke is great and it *will* exercise the controller. However, it does it more in the way a user might and can miss some edge cases. However, if you have a set of very specific behaviors like how a controller should respond to various mime types or what exceptions might be raised in certain circumstances, it might be better done using rSpec. Also, typically, a given rSpec test is faster because it doesn''t have to load the whole Rails stack and you can mock or stub irrelevant parts. Just my $.02.