Ruby on rails Rails 3-模拟/存根-测试控制器
我有一个关于测试以下Rails代码行的问题: 在我的测试代码中,我有如下内容(显然不起作用): 有人能帮我写正确的测试代码吗Ruby on rails Rails 3-模拟/存根-测试控制器,ruby-on-rails,testing,rspec,Ruby On Rails,Testing,Rspec,我有一个关于测试以下Rails代码行的问题: 在我的测试代码中,我有如下内容(显然不起作用): 有人能帮我写正确的测试代码吗 感谢为了简化测试,您应该将此逻辑移到客户机模型上的类方法中。我还假设您的用户模型上有一个has\u many:clients,这就是您的查询所暗示的 比如: class Client def self.search_by_name(name) all.where("name LIKE %?%", name).order("name ASC") end
感谢为了简化测试,您应该将此逻辑移到客户机模型上的类方法中。我还假设您的用户模型上有一个
has\u many:clients
,这就是您的查询所暗示的
比如:
class Client
def self.search_by_name(name)
all.where("name LIKE %?%", name).order("name ASC")
end
end
然后在控制器中:
@clients = current_user.clients.search_by_name(params[:search])
这将允许您在单元测试中进行测试,而不是使用集成测试
客户规格rb:
describe Client, 'searching by name' do
let(:current_user) { User.create!(...) }
let!(:client) { Client.create!(:name => 'client name', :user => current_user) }
it 'should find the clients by name' do
Client.search_by_name('client name').should include(client)
end
end
然后,您的集成测试可以只截取search\u by\u name
方法,并返回模拟的集合,从而使测试更容易