Tyl*_*ler 3 integration-testing rspec ruby-on-rails
我正在尝试测试注册电子邮件(使用设计发送),并且我一直收到错误消息:
Net::SMTPServerBusy: 454 4.7.1 <model_spec@example.com>: Relay access denied
Run Code Online (Sandbox Code Playgroud)
我正在使用Capybara运行Rails 3.2.11,并且(暂时)将我的spec_helper.rb和test.rb文件切碎到最低限度,仍然得到上面的错误.
require 'rubygems'
require 'spork'
Spork.prefork do
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rspec'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
end
end
Spork.each_run do
FactoryGirl.reload
end
Run Code Online (Sandbox Code Playgroud)
Upficial::Application.configure do
config.whiny_nils = true
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.delivery_method = :test
end
Run Code Online (Sandbox Code Playgroud)
测试本身非常简单:
require 'spec_helper'
describe User do
it "sends a confirmation email" do
@user = FactoryGirl.create(:user, email: "model_spec@example.com", username: "model_spec")
@user.send_confirmation_instructions
ActionMailer::Base.deliveries.last.to.should == [@user.email]
end
end
Run Code Online (Sandbox Code Playgroud)
无论是使用guard/spork还是使用'rspec spec/models/user_spec.rb',我都会得到相同的结果; 测试总是失败
Net::SMTPServerBusy: 454 4.7.1 <model_spec@example.com>: Relay access denied
Run Code Online (Sandbox Code Playgroud)
有什么配置应该改变的想法,如果有的话?
您的邮件服务器未配置为接受邮件*@example.com.它拒绝为该域中继电子邮件.
您可以将该域添加到您的邮件服务器作为有效的传递目标,但由于这是一个测试环境,您应该设置您的环境以使用电子邮件的测试机制:
# config/environments/test.rb
config.action_mailer.delivery_method = :test
Run Code Online (Sandbox Code Playgroud)
这将导致电子邮件被放入ActionMailer.deliveries而不是实际发送到您的邮件服务器,因此您可以检查并测试它们的存在和内容.
如果ActionMailer::Base.delivery_method是没有 :test的话,将无法正常工作; 你可以从控制台(通过rails console test)测试它,看看它是否真的:test.如果不是,请找出它被覆盖的位置并修复它.
| 归档时间: |
|
| 查看次数: |
3243 次 |
| 最近记录: |