Ruby Sinatra(红宝石)微型测试

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

我正在尝试对sintara使用minitest,我的问题是运行测试(ruby test_login.rb)无法找到登录页面,当我打印出文档html时,我得到了sinatra 404页面。我不知道如何将我的web应用程序与这个测试程序连接起来,我搜索过的所有文档和以前的问题都没有任何帮助

这是我的密码:

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:in
Test#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”结束这可能与此问题有关。