当前位置:  开发笔记 > 编程语言 > 正文

RSpec之前在助手中

如何解决《RSpec之前在助手中》经验,为你挑选了1个好方法。

有可能做这样的事情吗?

module MyHelper
  before (:each) do
    allow(Class).to receive(:method).and_return(true)
  end
end

然后在测试中,我可以执行以下操作:

RSpec.describe 'My cool test' do
  include MyHelper
  it 'Tests a Class Method' do
    expect { Class.method }.to eq true
  end
end

编辑:这将产生以下错误:

undefined method `before' for MyHelper:Module (NoMethodError)

本质上,我有一个案例,其中许多测试执行不同的操作,但是跨它们的通用模型对after_commit做出反应,最终会始终调用与API通讯的方法。我不想在全球范围内允许Class接收,:method因为有时我需要为特殊情况自己定义它...但是我不想不必重复我的allow / receive / and_return而是将其包装在一个通用帮助器中。 。



1> Stefan..:

您可以创建一个通过元数据触发的挂钩,例如:type => :api

RSpec.configure do |c|
  c.before(:each, :type => :api) do
    allow(Class).to receive(:method).and_return(true)
  end
end

在您的规格中:

RSpec.describe 'My cool test', :type => :api do
  it 'Tests a Class Method' do
    expect { Class.method }.to eq true
  end
end

您还可以传递:type => :api到各个it块。

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有