2014-03-25 45 views
0

我編寫了一個功能規格,並測試用戶註冊時的情況。我有它的工作,但我覺得預期的塊非常奇怪。在RSpec中寫這個更好的方法是什麼?

feature 'Visitor signs up' do 
    scenario 'with a valid email and password' do 
    visit new_account_path 

    fill_in_account_fields 
    fill_in_user_fields('[email protected]', 'foobar123') 

    expect{click_button 'Sign up'}.to change{Account.count}.by(1) and 
             change{User.count}.by(1) 
    end 
end 

特別是:

expect{click_button 'Sign up'}.to change{Account.count}.by(1) and 
            change{User.count}.by(1) 

是否有這樣做的更好的辦法?你認爲我以正確的方式接近這個嗎?

+0

你的最後一塊(預計)是否工作正常? – backpackerhh

+0

是的,它的工作原理。看起來很奇怪。 – DavidVII

+0

我不知道這件事。我曾經這樣做:'expect {expect {click {click_button'註冊'}。改變{Account.count} .by(1)}。改變{User.count} .by(1)'。帶着雙「期望」。 – backpackerhh

回答

1

嗯我不知道這件事。由於這是一個集成測試,我只會把用戶可以看到的東西。例如,我會把`expect(page).to have_content(「Hello user」)。然後,您可以對將User.count更改爲1的控制器或型號進行單元測試。

您想進行外部測試。使用集成測試測試功能(模擬用戶從字面上填充內容並單擊),同時使用單元測試測試Web應用程序。

scenario 'with a valid email and password' do 
    visit new_account_path  
    fill_in_account_fields 
    fill_in_user_fields('[email protected]', 'foobar123') 
    click_button 'Sign Up' 

    expect(page).to have_content 'Hi Guy' 
    end 

檢查出來。 Everyday Rails本書值得每一分錢。

http://everydayrails.com/2014/01/15/outside-in-example-ruby-tapas.html

這是從說話的截屏:

http://www.rubytapas.com/episodes/120-Outside-In

相關問題