开始Ruby Rails网站的单元和功能测试的最佳方式是什么?



我正在测试Ruby Rails网站,想开始单元和功能测试。

Cucumber 和 RSpec 值得一看。 他们鼓励以行为驱动、基于示例的风格进行测试。

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内置的测试机制。

Cucumber(以前称为 RSpec Story Runner)允许您用(相当)简单的英语编写高级验收测试,您可以向客户展示(并同意),然后运行它们:

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!"

我的建议是(认真地)绕过内置的rails单元/功能测试的东西,直接使用RSpec。

内置的rails东西使用Ruby附带的Test::Unit框架,它或多或少是JUnit/NUnit/AnyOtherUnit的直接端口。
我发现这些框架都相当乏味和烦人,导致对编写单元测试普遍冷漠,这显然不是你在这里想要实现的目标。

RSpec 是一个不同的野兽,它以描述你的代码应该做什么为中心,而不是断言它已经做了什么。它将改变你对测试的看法,你会有更多的乐趣。

如果我听起来有点像粉丝,那只是因为我真的相信 RSpec 那么好。我从对单元/功能测试感到恼火和厌倦,到对它深信不疑,几乎完全是因为 rspec。

听起来

你已经编写了你的应用程序,所以我不确定你会从使用Test::Unit RSpec中获得巨大的好处。

无论如何,无论您选择哪一个,您都会很快遇到另一个问题:管理夹具和模拟(即您的测试"数据")。所以看看应该和工厂女孩。

您还可以使用 Firefox 插件测试 Web 界面,例如 http://selenium.openqa.org/

它将记录点击和文本输入,然后播放并检查页面是否有正确的显示元素。

即使应用程序已经编写,我也建议使用 RSpec 而不是 Test::Unit 因为一个简单的事实,即没有应用程序完成。 您将需要添加功能和重构代码。 尽早养成正确的测试习惯将有助于减轻这些改变的痛苦

最新更新