代码之家  ›  专栏  ›  技术社区  ›  The user without number

ArgumentError:缺少要链接的主机!请提供:host参数,设置default\u url\u选项[:host],或将:only\u path设置为true

  •  0
  • The user without number  · 技术社区  · 7 年前

    E 错误: ArgumentError:缺少要链接的主机!请提供:host参数,设置default\u url\u选项[:host],或将:only\u path设置为true

    我读过这个 this this

    我的代码在此行返回此错误:

    这是我文件中的代码。

    处方照片.rb

    require 'test_helper'
    
    class PrescriptionPhotosTest < ActionDispatch::IntegrationTest
      setup do
        Spree::Auth::Config[:confirmable] = false
        @user = FactoryGirl.create(:user)
      end
    
      def authenticated_header
        token = Knock::AuthToken.new(payload: { sub: @user.id }).token
        {
            'Authorization': "Bearer #{token}"
        }
      end
    
      test '/prescription_photos post endpoint throws an error when wrong params' do
         post '/api/prescription_photos', headers: authenticated_header, params: {
           something: {
               is: 'wrong'
           }
         }
    
        json = JSON.parse(body)
    
         assert_response 422
         assert json.has_key? 'exception'
         assert_equal 'param is missing or the value is empty: prescription', json['exception']
      end
    end
    

    工厂.rb

    FactoryGirl.define do
      factory :user, class: Spree::User do
        email 'test@test.nl'
        password 'test123'
        password_confirmation 'test123'
      end
    end
    

    ENV['RAILS_ENV'] ||= 'test'
    require File.expand_path('../../config/environment', __FILE__)
    require 'rails/test_help'
    
    class ActiveSupport::TestCase
      # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
      fixtures :all
      # Add more helper methods to be used by all tests here...
    end
    

    测试.rb

    Rails.application.configure do
      # Settings specified here will take precedence over those in config/application.rb.
      config.action_controller.default_url_options = { host: 'localhost', port: 3000 }
    
      # The test environment is used exclusively to run your application's
      # test suite. You never need to work with it otherwise. Remember that
      # your test database is "scratch space" for the test suite and is wiped
      # and recreated between test runs. Don't rely on the data there!
      config.cache_classes = true
    
      # Do not eager load code on boot. This avoids loading your whole application
      # just for the purpose of running a single test. If you are using a tool that
      # preloads Rails for running tests, you may have to set it to true.
      config.eager_load = false
    
      # Configure public file server for tests with Cache-Control for performance.
      config.public_file_server.enabled = true
      config.public_file_server.headers = {
        'Cache-Control' => 'public, max-age=3600'
      }
    
      # Show full error reports and disable caching.
      config.consider_all_requests_local       = true
      config.action_controller.perform_caching = false
    
      # Raise exceptions instead of rendering exception templates.
      config.action_dispatch.show_exceptions = false
    
      # Disable request forgery protection in test environment.
      config.action_controller.allow_forgery_protection = false
      config.action_mailer.perform_caching = false
    
      # Add the host parameter
      config.action_mailer.default_url_options = { host: 'localhost' }
    
      # Tell Action Mailer not to deliver emails to the real world.
      # The :test delivery method accumulates sent emails in the
      # ActionMailer::Base.deliveries array.
      config.action_mailer.delivery_method = :test
    
      # Print deprecation notices to the stderr.
      config.active_support.deprecation = :stderr
    
      # Raises error for missing translations
      # config.action_view.raise_on_missing_translations = true
    end
    

    在运行rake测试:集成之后,我得到了上面提到的错误。

    1 回复  |  直到 7 年前
        1
  •  0
  •   The user without number    7 年前
    Spree::Auth::Config[:confirmable] = false
    

    prescription_photos_rest.rb 被覆盖购买环境价值。