2012-10-02 51 views
1

如何聲明用戶在使用Cucumber時未被創建?在RSpec的,我會用下面的塊,這是我不能轉化爲黃瓜:如何確定黃瓜模型的未知性?

... 
describe "with invalid information" do 
    it "should not create a new user" do 
    expect { click_button submit }.not_to change(User, :count) 
    end 
end 

# Cucumber equivalent 
When /^he submits invalid information$/ do 
    click_button "Sign up" 
end 
Then /^an account should not be created$/ do 
    # not sure how to translate the expect block 
end 

回答

2

在這個例子中,你就會知道用戶會使用電子郵件,所以你可以:

Then /^an account should not be created$/ do 
    User.where(email: "[email protected]").first.should be_nil 
end 
+0

只是好奇,如果我們想要更細化和測試用戶根本沒有輸入任何輸入的情況會怎麼樣。在這種情況下,我們將無法使用'User.where(email:...)',因爲沒有提供電子郵件地址。 – Mohamad

+0

ismaelga的答案是做這個測試的好方法。您也可以關閉@user_count並稍後進行測試。 –

2

你也可以做

Given I have 3 users 
When I submit with invalid information 
Then I should have 3 users 
1

您可以使用lambda直接翻譯你的RSpec的測試,而不是依賴於一種變通方法。

Then /^an account should not be created$/ do 
    save = lambda { click_button :submit } 
    expect(save).not_to change(User, :count) 
end