我第一次使用Draper并且它工作得很好......除了它打破了我的大多数规格。一个例子:
我正在设置account_settings_controller_spec.rb
describe '#create' do
before do
@user = create :user
end
end
之前完全正常(我config.include FactoryGirl::Syntax::Methods
设置为这样调用工厂)
但是,现在当我致电create :user
时,我得到了undefined method 'full_name' for class 'User'
,这是我从用户模型转移到UserDecorator的方法。
这很奇怪,因为工厂和规范都使用full_name
方法。
我尝试了很多东西:
ApplicationController.new.set_current_view_context
(导致错误)require 'draper/test/rspec_integration'
到我的spec_helper.rb(什么都不做)before/after(:create) { |instance| instance.decorate }
添加到我的工厂(也无效)我不确定我在这里缺少什么,甚至不知道为什么会抛出错误。也许我的装饰者在RSpec启动时没有被包括在内?
答案 0 :(得分:0)
啊哈哈!
我知道自己很傻。
这是因为我使用的是friendly_id
class User < ActiveRecord::Base
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
...
def slug_candidates
[:full_name, :id]
end
end
我刚刚将full_name
方法移回模型并且可以正常工作。