ruby-on-rails-3 - 在 Rails 中测试默认范围

标签 ruby-on-rails-3 testing rspec

全部。 我很难用默认范围为我的模型编写测试。我有一个具有属性 active_status 的用户模型,可以由管理员更改。我给了用户默认范围 active_status true。 default_scope(:active_status => true ) 在 Admin 页面中,我使用了 unscoped 以便 Admin 可以看到所有用户。 这个测试怎么写? 谢谢

最佳答案

你可以这样做:

context "scopes" do
  describe "default_scope" do
    before do 
      create(:user, active_status: true) 
      create(:user, active_status: false)
    }

    context "with default scope" do
      subject { User.all }

      it { should have(1).user }
    end

    context "without default scope" do
       subject { User.unscoped.all }

      it { should have(2).users }
    end
  end
end

注意:我正在使用 RSpecFactoryGirl .

注意 2:您可以将此视为反模式,因为 default_scope 是 protected 方法。但这正是您所要求的。

关于ruby-on-rails-3 - 在 Rails 中测试默认范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19915483/

相关文章:

ruby-on-rails - Rails 使用 Rspec 进行测试 ---> ActionView::MissingTemplate:

ruby-on-rails - 断言 Redis 发布

ruby-on-rails-3 - Rails 3.1 RC 中 File.read(Rails.root.join ('public/images/email_banner.png' )) 的等价物是什么?

ruby-on-rails - 添加标签到输入

ruby-on-rails - 使用 net-ldap 从 AD 组中删除成员

php - 单元测试中的依赖关系

testing - 如何对极其复杂的系统进行功能测试?

android - 如何使用 Espresso 测试 Android 应用程序已关闭

rspec - 如何在rspec中测试put

ruby-on-rails - 由于此警告 : [WARNING] You provided devise_for :users but there is no model User defined in your application,设计无法正常工作