我需要实现这个类100%的代码覆盖率。
我如何在simplecov中测试下面的类?
如何在rspec中测试save_user方法?
class Log < ActiveRecord::Base
has_and_belongs_to_many :tags
has_one :asset
has_one :user
belongs_to :user
after_create :save_user
def save_user
self.user_id = :current_user
self.save()
end
end
describe Log do
context "When saving a user is should save to the database."
it "should call insert fields with appropriate arguments" do
expect(subject).to receive(:asset).with("TestData")
expect(subject).to receive(:user).with("DummyName")
expect(subject).to save_user
subject.foo
end
end 发布于 2016-09-27 12:58:21
有几个问题正在发生:
has_one :user
belongs_to :user同时使用'has_one‘和'belongs_to’关系来引用同一个模型是很不寻常的。通常情况下,您只需要其中之一。(例如,如果日志有一个user_id字段,那么您只需要belongs_to,而不需要has_one)
self.user_id = :current_user如果您试图调用一个方法而不是存储一个符号,那么您可能需要current_user而不是:current_user。
为了测试after_save的实际运行情况,我推荐这样的代码:
log = Log.new
expect(log).to receive(:after_save).and_call_original
log.save
expect(log.user).to eq(current_user)在新实例上调用save将触发after_create运行,然后您可以验证结果并检查其是否正确运行。
https://stackoverflow.com/questions/39715559
复制相似问题