我使用rspec,当我运行rake规范时,用户邮件程序通过smtp发送电子邮件,而不是将电子邮件存储在ActionMailer :: Base.deliveries-array中(由用户观察者调用)...
你能给我一个提示吗?
# Rails version
rails -v
=> Rails 3.0.1
# Ruby version with rvm (rvm version 1.0.16)
ruby -v
=> ruby 1.9.2p7 (2010-09-29 revision 29373) [x86_64-darwin10.4.0]
# Gemfile
gem "rspec-rails", ">= 2.0.1"
Run Code Online (Sandbox Code Playgroud)
配置-文件:
# config/environments/test.rb
MyApp::Application.configure do
config.action_mailer.delivery_method = :test
config.action_mailer.raise_delivery_errors = true
end
# spec/spec_helper.rb
...
ENV["RAILS_ENV"] ||= 'test'
...
# app/models/user_observer.rb
class UserObserver < ActiveRecord::Observer
observe User
def after_create(record)
puts Rails.env
# => "test"
UserMailer.new_user_notification(record).deliver
puts ActionMailer::Base.deliveries.inspect
# => []
# Sends it via smtp! …Run Code Online (Sandbox Code Playgroud) 在RSpec中我可以创建辅助模块 /spec/support/...
module MyHelpers
def help1
puts "hi"
end
end
Run Code Online (Sandbox Code Playgroud)
并将其包含在每个规范中:
RSpec.configure do |config|
config.include(MyHelpers)
end
Run Code Online (Sandbox Code Playgroud)
并在我的测试中使用它,如下所示:
describe User do
it "does something" do
help1
end
end
Run Code Online (Sandbox Code Playgroud)
如何在所有MiniTest测试中包含一个模块,而不必在每次测试中重复自己?
我有2个型号:
# user.rb
class User < ActiveRecord::Base
has_one :profile, :dependent => :destroy
end
# profile.rb
class Profile < ActiveRecord::Base
belongs_to :user
validates_presence_of :user
end
# user_factory.rb
Factory.define :user do |u|
u.login "test"
u.association :profile
end
Run Code Online (Sandbox Code Playgroud)
我想做这个:
@user = Factory(:user)
=> #<User id: 88,....>
@user.profile
=> #<Profile id:123, user_id:88, ......>
@user = Factory.build(:user)
=> #<User id: nil,....>
@user.profile
=> #<Profile id:nil, user_id:nil, ......>
Run Code Online (Sandbox Code Playgroud)
但这不起作用!它告诉我,我的个人资料模型不正确,因为没有用户!(它在用户之前保存配置文件,因此没有user_id ...)
我怎样才能解决这个问题?尝试了一切.. :(我需要调用Factory.create(:user)...
UPDATE
修复了这个问题 - 现在正在使用:
# user_factory.rb
Factory.define :user do |u|
u.profile { Factory.build(:profile)}
end …Run Code Online (Sandbox Code Playgroud) testing ruby-on-rails ruby-on-rails-plugins ruby-on-rails-3 factory-bot
有人知道Rails 3什么时候发布?试图在网上找到信息 - 但我发现没什么用处......
你能告诉我为什么以下不能在postgres sql中工作吗?:
See updated code below
Run Code Online (Sandbox Code Playgroud)
更新:
我希望查询返回"0.30"作为浮点数.这个构造仅用于测试目的,我有一些复杂的查询依赖于这个条件结构... BUt我不知道如何解决它..
结果是:
ERROR: syntax error at or near "1"
LINE 4: if 1=1 then
Run Code Online (Sandbox Code Playgroud)
更新:
这个结构出现在一个函数中......所以我想做以下事情:
CREATE FUNCTION f_test(myvalue integer) RETURNS float AS $$
BEGIN
select (
case (select '1')
when '1' then
if 1=1 then
0.30::float
else
0.50::float
end
else
1.00::float
end
);
END;
$$ LANGUAGE plpgsql;
select f_test(1) as test;
Run Code Online (Sandbox Code Playgroud)
错误信息见上文.
是否可以通过rake任务让minitest只运行失败的测试?
无法在互联网上找到任何关于这个...用rspec或黄瓜它工作..这里有可能吗?
正如您自己所知,有时您必须通过rails控制台在现场制作机器上执行任务...
我通常从以下开始: bundle exec rails console -e production
但是由于它是生产机器,我想将rails控制台的所有+输出记录到文件中 /home/sshuser/myproject/console_sessions/2016_09_09__14_33_33.txt
谁知道怎么做?我想以自动方式启动记录器,但只有在我运行控制台的情况下?
(我正在运行Rails 3.2)谢谢!
我们正在尝试实施新的欧盟冠状病毒测试/疫苗接种证书的验证,但无法使 base45 解码工作。
规范在这里:https : //datatracker.ietf.org/doc/draft-faltstrom-base45/
我们几乎完成了我们的课程,但有时我们会得到错误的值。
目标是这样的:
Encoding example 1: The string "AB" is the byte sequence [65 66].
The 16 bit value is 65 * 256 + 66 = 16706. 16706 equals 11 + 45 * 11
+ 45 * 45 * 8 so the sequence in base 45 is [11 11 8]. By looking up
these values in the Table 1 we get the encoded string "BB8".
Encoding example 2: The string "Hello!!" as ASCII is …Run Code Online (Sandbox Code Playgroud) 您有什么推荐的吗?
Authlogic还是restful_authentication?
将电子邮件激活步骤构建为authlogic是困难的(据我所知,Authlogic没有包含此功能).
ruby ×7
minitest ×2
rspec ×2
testing ×2
case ×1
email ×1
factory-bot ×1
haml ×1
if-statement ×1
postgresql ×1
release ×1
rubygems ×1
sql ×1