Ruby on rails Rails 3-模拟/存根-测试控制器

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

我有一个关于测试以下Rails代码行的问题:

在我的测试代码中,我有如下内容(显然不起作用):

有人能帮我写正确的测试代码吗


感谢

为了简化测试,您应该将此逻辑移到客户机模型上的类方法中。我还假设您的用户模型上有一个
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
方法,并返回模拟的集合,从而使测试更容易