2008-09-26 46 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/

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

相关问题