ruby-on-rails - ruby電子書 - 安裝rails




Ruby on Rails如何開始使用TDD? (5)

我對這些概念很熟悉(在大學裡參加過測試課程),但我不確定如何真正使用它們,因為我從未參與過“真正”的TDD項目。

我即將開始使用Ruby on Rails開發項目(很可能使用2.3)。 此應用程序將用於管理數據,用戶和一些文件。 起初它不會太複雜,但在未來6個月內可能會擴展很多,所以我覺得現在是進入TDD的正確時機。

我有一個關於如何做的基本想法,但我仍然需要一些指導和建議:

  • 我應該閱讀哪些Ruby on Rails TDD 101文章?

  • 我需要測試什麼?

  • 我應該使用什麼寶石/插件?

  • 我應該使用rspec ? 還有別的嗎?

  • 一旦我有了所有的測試課程,我該如何去部署它們? (如:持續集成)

  • TDD真的是如此耗時?

  • 我需要閱讀一本關於此的書嗎?或者我可以通過玩弄它並閱讀在線教程來獲得一切嗎? 如果我需要讀一本書,什麼書?

我喜歡學習示例,所以有人會告訴我如何去採取TDD方法來解決這個問題:

我有公司。 我有聯繫人。 聯繫人可以鏈接到1家公司。 一個公司可以有多個聯繫人。 我想創建方法來創建聯繫人,公司並將聯繫人鏈接到公司。

你不必在你的答案中使用這個例子,但它會有所幫助:)


我應該使用什麼寶石/插件?

我一直很享受Shoulda

TDD真的是如此耗時?

我一直主張TDD開發的原因是它關注我將如何實現特定的代碼段。 我有一種軼事的感覺,即每當我更加堅持TDD原則時,我就會花更少的時間重新工作。 花費的時間總是在你編寫單元測試的時候。 如果單元測試沒有捕獲到預期的行為,那麼花在它們上面的所有時間都將被浪費。


我應該閱讀哪些Ruby on Rails TDD 101文章?

我將從一個測試rails應用程序的指南開始。

Railscast還有一些關於如何使用不同測試工具的優秀截屏。

我需要測試什麼?

我將從模型開始,因為它們很容易測試。 簡單的規則是你需要覆蓋你的測試中的每個if語句。

您應該測試該方法的用途(以確保其功能與預期的一樣)以及所有邊緣情況。

還要確保你不會因測試而結束。

我應該使用什麼寶石/插件? 我應該使用rspec? 還有別的嗎?

當你開始時,只需使用Test Unit 。 熟悉基礎知識後,可以使用rspeccucumber

如果你想成為真正的測試驅動者, Autotest是一個很好的工具。 但這不是必需的。

一旦我完成了所有的測試課程,我該如何去部署它們?

不確定這個問題。 你通常不會部署測試。 一旦你有所有的測試類簡單的類型'耙測試'來運行所有的測試。

TDD真的是如此耗時?

它確實節省了時間。 如果你喜歡迷宮迷宮,你知道如果你從完成到開始,解決它幾乎總是更容易。 與TDD一樣。 沒有測試驅動,你一直在想'下一步該怎麼做'。 通過測試驅動,測試會告訴您下一步該做什麼(如果邏輯不存在,則會中斷,因此您只需修復損壞的部分)。 此外,您還擁有更少的bug,從長遠來看可以為您節省大量時間。

我需要閱讀一本關於此的書嗎?或者我可以通過玩弄它並閱讀在線教程來獲得一切嗎? 如果我需要讀一本書,什麼書?

你不需要一本書。 學習任何東西最有效的方法是:就這樣做。 一旦遇到問題或問題,請返回本書或在線資源。 這也是敏捷的。

在你的例子中,需要測試的事情是:一個聯繫人可以鏈接到一個公司,一個公司可以有多個聯繫人,創建聯繫方式並將聯繫人鏈接到公司。

class CompanyTest <Test::Unit
    def test_relationship # test associations/relationships
        c = companies(:some_company)
        assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts
    end
end

class ContactTest<Test::Unit
   def  test_relationships
        c = contact(:some_contact)
        assert_equal some_company, c.company # make sure the contact link to 1 company
   end

   def  test_create/add
        # test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly
   end
end


我推薦這本書: Ruby on Rails教程 。 我幾乎完成了它。 本書採用TDD全書。 試一試!






tdd