我是Ruby&的新手Rails基本上来自Java背景,因此我提前为我对RoR的有限知识道歉。
Ruby版本= 2.1
Rails版本= 4.2
在处理现有的Rails 4应用程序时,我遇到了在其中一个测试文件中编写的以下测试。这个测试试图测试应用程序的登录页面,但我对以下问题感到困惑:
localhost
运行的。如何将此测试点指向其他主机www.dev-server.com
? login_test.rb
require 'integration_test_helper'
class LoginTest < ActionDispatch::IntegrationTest
setup do
@user = users(:admin)
end
test "login page is displayed on root path" do
delete '/signout'
get root_path
assert redirect?
assert_redirected_to '/signin'
follow_redirect!
assert_template :new
assert_template %r{\Adevise/sessions/new\Z}
assert_select "a[href=?]", users_path, count: 0
assert_select "input[id=?]", 'login-email', count: 1
assert_select "input[id=?]", 'login-password', count: 1
assert_select "button[id=?]", 'login', count: 1
end
end
integration_test_helper.rb
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require "minitest/reporters"
Minitest::Reporters.use! [Minitest::Reporters::JUnitReporter.new, Minitest::Reporters::SpecReporter.new(:color => true)]
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
fixtures :all
....
end
答案 0 :(得分:2)
- “MiniTest”仅用于单元测试或集成测试,还是两者兼而有之?
醇>
MiniTest是一个通用的框架,可以像JUnit或PHPUnit一样进行测试。它开箱即用,但可以扩展用于不同的任务。它是一把扳手,你可以用扳手来制造火箭飞船或玩具车。
- 此测试实际上是
醇>MiniTest
测试,还是仅在辅助文件中导入现有的默认Ruby
测试框架而不是 实际上使用任何MiniTest
功能?
Rails测试都建立在ActiveSupport::TestCase
之上。 ActiveSupport::TestCase
构建为在MiniTest
或较早的Test::Unit
之上运行,后者提供转轮和断言。
- 醇>
MiniTest
可以实际测试DOM
元素,例如用户输入框中的输入文字,按钮点击等吗?
是和否。 MiniTest
本身不包含文档解析器或DOM模拟器。如果你添加 - 是的。
- 它是否通过内部启动服务器来实际访问应用程序?
醇>
是。集成测试实际上使用HTTP在您的应用上执行请求。
- 只能
醇>MiniTest
可以通过在无头模式下运行来端到端地测试Rails
应用程序吗?
不,见上文。
- 只能
醇>MiniTest
通过selenium启动浏览器来端到端地测试Rails
应用程序吗?我知道Capybara可以做到这一点。
不,见上文。
- 我猜这个测试是针对
醇>localhost
运行的。如何将此测试点指向其他主机www.dev-server.com
?
有可能吗?是。好主意?没那么多。
您不想这样做的原因是:
这基本上是你在对服务器进行javascript测试时不得不做的事情。那种情况太可怕了。
您可能正在寻找的是设置一个CI环境,例如Travis,您可以在其中运行测试。