2008-09-26 43 views

回答

6

CucumberRSpec值得一看。他們鼓勵以基於示例的風格的behaviour-driven進行測試。

RSpec的是單位級測試庫:

describe "hello_world" 
    it "should say hello to the world" do 
    # RSpec comes with its own mock-object framework built in, 
    # though it lets you use others if you prefer 
    world = mock("World", :population => 6e9) 
    world.should_receive(:hello) 
    hello_world(world) 
    end 
end 

它有Rails的特殊支持(例如,它可以隔離測試模型,視圖和控制器),並可以取代Rails的內置測試機制。

黃瓜(原名RSpec的故事亞軍),讓你寫的(相當)簡單的英語高層次的驗收測試,你可以展示給(和同意)客戶,然後運行它們:

Story: Commenting on articles 

    As a visitor to the blog 
    I want to post comments on articles 
    So that I can have my 15 minutes of fame 

    Scenario: Post a new comment 

    Given I am viewing an article 
    When I add a comment "Me too!" 
    And I fill in the CAPTCHA correctly 
    Then I should see a comment "Me too!" 
+0

驗收測試的第二個API已從RSpec中取出,現在稱爲「黃瓜」。 – 2008-12-02 10:34:53

+0

謝謝 - 我已編輯過最新的答案。 – 2008-12-22 19:36:51

4

我的建議是(嚴重)只是繞過內置的軌道單元/功能測試的東西,並直接爲RSpec

內置的Rails東西使用Test::Unit框架,它附帶了ruby,它或多或少是JUnit/NUnit/AnyOtherUnit的直接端口。
我發現這些框架都非常繁瑣和煩人,導致對編寫單元測試的普遍冷漠,這顯然不是你想要在這裏獲得成功的。

RSpec的是一個不同的野獸,圍繞描述什麼你的代碼應該做的,而不是聲稱它已經確實做文章。它會改變你如何看待測試,並且你會做更多的樂趣。

如果我聽起來有點像一個迷,那只是因爲我真的相信RSpec是那麼好。我從對單元/功能測試的厭煩和厭倦變成了堅定的信奉者,幾乎完全是因爲rspec。

4

聽起來好像您已經編寫了您的應用程序,所以我不確定您會從使用RSpec而不是Test::Unit獲得鉅額獎金。無論如何,無論您選擇哪一個,您都會很快遇到另一個問題:管理設備和模擬(即您的測試「數據」)。所以看看ShouldaFactory Girl

0

即使應用程序已經寫好,我也會推薦使用RSpec而不是Test :: Unit,因爲沒有任何應用程序可以完成。你將要添加功能和重構代碼。獲得正確的測試習慣早將有助於使這些改動痛苦少

1

您還可以測試出一個Firefox的Web界面插件如http://selenium.openqa.org/

它會記錄點擊和文本輸入,然後回放並會檢查頁面是否有正確的顯示元素。

相關問題