我正在使用Ruby on Rails 3.0.10,我打算尽快切换到versioni 3.1。使用新的RoR版本,我还计划在我的应用程序中添加自动化测试。
简而言之,我想知道所有关于我可以,应该和“必须”使用的测试来改进我的应用程序(还来测试jQuery-JavaScript代码)。
答案 0 :(得分:2)
自动化测试是什么意思?
如果您的意思是单元/功能/集成测试,那么在升级到Rails 3.1之前,您应该具备这些功能。它们将非常有助于在升级过程中找到破坏的位置,当它们全部通过时,您可以对应用程序再次运行有一定程度的信心。
如果通过自动化测试,您指的是更高级别的内容,例如UI测试(我将其解释为),我建议使用Watir或Selenium。像这样的测试应该仍然有效,并且不会受到底层实现的影响(无论是Rails 3.0.10还是3.1)。只要该应用程序仍然有效,那些测试仍然有效。
答案 1 :(得分:1)
Guard + Spork(+ Rspec + Capybara)=自动化测试。
我不建议使用黄瓜。每个人都喜欢Cucumber,但它的工作量远远超过它的价值。这是一个正则表达层,除了你可以用Rspec + Capybara与the new acceptance testing feature轻松完成之外(它是一个单独的宝石,现在它包含在rspec中)。
构建应用时,我建议您这样做:
it "should save a :start_date"
这样的事情。首先通过编写属性测试(它接受的start_date
值,如何处理无效值等)开始构建模型。然后根据需要,在模型之间编写集成测试。它们是模型测试,而不是单元测试。当您为模型属性编写测试时,这些是单元测试(隔离类测试)。当你在模型之间测试功能时(当我做user.posts.create(:title => "My first blog post")
时,我希望为该用户创建一个帖子),这些在我看来是“集成”测试。在Rspec中,这些是“模型”测试。spec/acceptance
目录中。节省您的时间和思考。最后,您要彻底测试模型,并彻底测试请求/ html。对于Javascript测试,我正在考虑构建some sort of node.js/websocket layer,允许您在Mac和Windows上(通过Parallels或VMWare Fusion或其他)对您的Rails + Spork测试服务器本地运行jasmine测试,是更好的方法来进行视图+ javascript测试,因为你可以获得整个应用程序,因为它确实在生产中。
到目前为止,您只需要构建一个可靠的Rails应用程序。希望有所帮助,兰斯。
答案 2 :(得分:0)