I am having trouble showing a mock logged in user in cucumber.
When a user is logged in they can, make a post.
My Errors:
(::) failed steps (::)
undefined local variable or method `user' for #<Cucumber::Rails::World:0x85974df4> (NameError)
./features/step_definitions/tasklist_steps.rb:25:in `/^that I want to post a link$/'
features/tasklist.feature:10:in `Given that I want to post a link'
Failing Scenarios:
cucumber features/tasklist.feature:9 # Scenario: Submitting a Link
1 scenario (1 failed)
4 steps (1 failed, 1 skipped, 1 undefined, 1 passed)
0m0.432s
My Cucumber:
Given /^I am an authenticated user$/ do
name = 'example'
email = 'example@example.com'
password = 'secret'
Given %{I have one user "#{name}" with email "#{email}" and password "#{password}"}
And %{I go to the user login page}
And %{I fill in "username" with "#{name}"}
And %{I fill in "password" with "#{password}"}
And %{I press "Login"}
end
Given /^that I want to post a link$/ do
title = 'My revolutionary post'
website_link = "http://www.google.com"
category = 'activism'
user = authenticated user
And %{I go to the new post page(#{user})}
How can I make a mock of an authenticated user? so that the test will pass?
The line
is the problem. The right-hand side symbol
useris undefined. Isauthenticateda method here?UPDATE: Question clarified
In your Cucumber feature you would have a scenario which starts something like this:
Then create a step definition like this:
Now
@userwill be available in your subsequent step definitions to complete the scenario. If you need to provide default model instance values for a user (i.e. additional to the 3 I’ve shown in the scenario) then you should consider using the Factory Girl gem in which case you could create the user like this: