ruby-on-rails - Rspec:如何创建一个方法来调用和创建所有模拟?

标签 ruby-on-rails testing rspec ruby-on-rails-5 rspec-rails

我正在使用 Rspec 来测试我的 Rails 应用程序,并使用 FactoryBot(工厂女孩的新名称)来创建模拟。但是在每个文件中我都需要调用很多模拟。这几乎就是一些东西,调用一些模拟,创建一个用户,登录并确认这个用户。我可以创建一个方法来调用所有这些模拟、登录并确认用户吗?然后我只需要调用这个方法。

这是我在每个 rspec 文件中调用的内容:

let!(:nivel_super) { create(:nivel_super) }
let!(:gestora_fox) { create(:gestora_fox) }
let!(:user_mock) { create(:simple_super) }
let!(:super_user) { create(:super_user, 
  nivel_acesso_id: nivel_super.id, gestora_id: gestora_fox.id) }

let!(:ponto_venda) { create(:ponto_venda1) }
let!(:tipo_op) { create(:tipo_op) }

before(:each) do
  @request.env["devise.mapping"] = Devise.mappings[:user]
  super_user.confirm
  sign_in super_user
end

我在想:

def call_mocks
  # put the code above
end

比在每个 rspec 文件中:

RSpec.describe OrdemPrincipalsController, type: :controller do
  describe 'Ordem Principal tests' do

    call_mocks

    it 'go to new page' do
      # my test
    end

  end
end

最佳答案

你应该简单地使用共享上下文 https://relishapp.com/rspec/rspec-core/v/3-4/docs/example-groups/shared-context

它与 shared_example 类似,但它是你想要的上下文

尽管如此,很多测试的设置完全相同,请考虑将它们放在相同的上下文中

享受 :)

关于ruby-on-rails - Rspec:如何创建一个方法来调用和创建所有模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50009568/

相关文章:

ruby-on-rails - Capybara::ElementNotFound:无法找到可见的选择框

ruby-on-rails - 我怎样才能禁用rails 4详细日志,esp缓存未命中/命中

ruby - RSpec - 如何模拟存储过程

ruby-on-rails-3 - 如何使用 Devise 和 rspec 测试 Rails3 引擎

ruby-on-rails - 'rake spec' 不与自定义 RAILS_ENV 一起运行,但 'rspec' 和 'bundle exec rspec' 可以

ruby-on-rails - 安全地显示使用回形针 gem 上传的图像

ruby-on-rails - 设置 http header RSpec 2.4/Rails 3

android - 在 Android 中,为什么我需要为 "test"sourceSet 使用 androidTestCompile?

python - unittest 在这里不起作用有什么原因吗?

angular - 如何为 Angular Component 中的 ActionsSubject 订阅编写单元测试