我们初创公司的承包商安装了基于 Selenium 的 Nightwatch 测试框架,因为我们的堆栈是 React-heavy。但他告诉我,它甚至可以用来测试我们的 Rails 代码。相反,一位新承包商表示 Nightwatch 无法对我们的 Rails Controller 和模型进行单元测试(这对我来说很有意义)。
谁是对的?您是否认为第一个程序员的想法只是我们将进行端到端测试(某些输入导致某些输出),而我们不需要测试 Rails 代码的细节?如果我们想成为 TDD 商店,我们是否如我怀疑和新承包商所断言的那样,需要 RSpec 或其他一些基于 Ruby 的测试框架来处理我们的 Rails 代码?
最佳答案
是的,它可以用来测试 Rails。但只能从外部(只能通过浏览器)。所以没有单元/ Controller / View 测试。 对于这些,您需要 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 带有单元测试、功能/ Controller 测试和集成测试。最类似于 Nightwatch 的内置东西是集成测试:http://guides.rubyonrails.org/v4.1/testing.html#integration-testing
您还可以查看诸如 Capybara ( https://github.com/teamcapybara/capybara ) 之类的库,它自称为验收测试框架。它与 TestUnit/Minitest/Rspec 很好地集成。
关于ruby-on-rails - Nightwatch 可以用来测试 Rails 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45047769/