Ruby Sinatra(红宝石)微型测试
我正在尝试对sintara使用minitest,我的问题是运行测试(ruby test_login.rb)无法找到登录页面,当我打印出文档html时,我得到了sinatra 404页面。我不知道如何将我的web应用程序与这个测试程序连接起来,我搜索过的所有文档和以前的问题都没有任何帮助 这是我的密码:Ruby Sinatra(红宝石)微型测试,ruby,testing,sinatra,rack,minitest,Ruby,Testing,Sinatra,Rack,Minitest,我正在尝试对sintara使用minitest,我的问题是运行测试(ruby test_login.rb)无法找到登录页面,当我打印出文档html时,我得到了sinatra 404页面。我不知道如何将我的web应用程序与这个测试程序连接起来,我搜索过的所有文档和以前的问题都没有任何帮助 这是我的密码: require 'sinatra/base' require 'minitest/autorun' require 'rack/test' require 'minitest/spec' requ
require 'sinatra/base'
require 'minitest/autorun'
require 'rack/test'
require 'minitest/spec'
require 'nokogiri'
require 'rack/test'
require_relative 'login'
class Test < MiniTest::Test`
include Rack::Test::Methods
def app
Sinatra::Application
end
def test_login
response = get ('/home')
doc = Nokogiri::HTML(response.body)
puts last_response
puts doc
#response = post '/login', username: 'test_user', password: 'password'
#get '/home'
#follow_redirect!()
#puts doc
#assert_equal "Admin", doc.at_css("#admin-block div h1")
end
end
需要'sinatra/base'
需要“微型测试/自动运行”
要求“机架/测试”
需要“小型测试/规格”
需要“nokogiri”
要求“机架/测试”
需要相对“登录”
类测试
请不要评论要求我使用不同的测试gem
谢谢因为您正在测试登录是否有效,所以您只想看看传递给登录表单的登录信息是否真的给出了
HTTP200
响应
没有必要使用示例中未注释的代码的第一部分。
作为一个旁注,检查来自页面的响应是否具有某个页面正文内容的HTTP代码不被认为是一个“好”测试,但是如果您认为它是足够好的,那么继续进行。
如果您传递的登录信息有效,则以下测试应该有效
def test_login
response = post '/login', username: 'test_user', password: 'password'
assert_equal response.status, Net::HTTPSuccess
end
编辑
在发布我的答案后,问题立即得到了更新,但是如果您在向
/home
发送GET请求时出错,那么您的应用程序中似乎没有定义该路径。您可能至少应该显示Sinatra应用程序的一些相关部分。由于(我假设)response=get('/home')
工作正常,我想这不是Minitest或Rack::Test的问题,而是应用程序本身的问题。response=get('/home')工作不正常,因为控制台的输出是404页,它应该会进入主页。1)错误:Test#Test#u login:NameError:uninitialized constant Test::Net Test_login.rb:31:inTest#u login'是我收到的错误
assert#u equal response.status,Net::HTTPSuccess`是一段有问题的代码。您必须要求“Net/http”
才能工作。回到原始问题:404#Running:body{text align:center;字体系列:helvetica,arial;字体大小:22px;颜色:888;边距:20px}c{margin:0 auto;width:500px;text align:left}Sinatra不知道这首小曲。请尝试以下操作:post'/login'执行“Hello World”结束这可能与此问题有关。