可以使用Nightwatch来测试Rails吗?

时间:2017-07-12 03:15:07

标签: ruby-on-rails ruby selenium rspec nightwatch.js

我们创业公司的承包商安装了基于Selenium的Nightwatch测试框架,因为我们的堆栈是React-heavy。但他告诉我它甚至可以用来测试我们的Rails代码。相反,一位新承包商表示,守夜人无法对我们的Rails控制器和模型进行单元测试(这对我来说很有意义)。

谁是对的?你是否认为第一个程序员只是考虑到我们会进行端到端测试(某些输入导致某些输出),而我们不需要测试Rails代码的细节?我怀疑并且作为新的承包商断言,如果我们想要成为TDD商店,我们是否需要RSpec或其他一些基于Ruby的测试框架来处理我们的Rails代码?

1 个答案:

答案 0 :(得分:5)

是的,它可以用来测试Rails。但只能从外部(仅通过浏览器)。所以没有单元/控制器/视图测试。 你需要MiniTest或Rspec。

我的两分钱(也见@SteveCarey的评论):因为我更喜欢坚持使用Rails附带的内容并使用尽可能少的外部工具:

查看Rails 5.1中引入的系统测试,或者,如果您使用的是旧版本,请查看是否可以使用Capybara / Integration Tests编写这些测试。

更新

您可以在此处找到有关测试框架的更多详细信息:http://guides.rubyonrails.org/v4.1/testing.html#brief-note-about-minitest

这是Test :: Unit,现在是Minitest。但基本原理是相同的,所以它并不重要。

另一个流行的测试框架是RSpec。如果你愿意,你可以使用它而不是Minitest / TestUnit。我更喜欢Minitest,但两种框架都有利弊。

Rails 4.2附带单元测试,功能/控制器测试和集成测试。类似于Nightwatch的内置东西是Integration-tests:http://guides.rubyonrails.org/v4.1/testing.html#integration-testing

您还可以查看Capybara(https://github.com/teamcapybara/capybara)等库,这些库自称为验收测试框架。它与TestUnit / Minitest / Rspec很好地集成。