小编Kat*_*ida的帖子

如何覆盖从 RSpec 验证内部引用的常量

我的模型有这样的自定义验证。

class User
  # skip before

  MAX_FILE_SIZE = 10.megabytes.to_i
  validates :file, size: { max: MAX_FILE_SIZE }

  # skip after
end
Run Code Online (Sandbox Code Playgroud)

而且,我想MAX_FILE_SIZE通过规范中的覆盖进行测试MAX_FILE_SIZE。所以,我就这样写了。

context "MAX_FILE_SIZE is default" do
  it do
    # test something
  end
end
context "MAX_FILE_SIZE is 1byte" do
  before do
    stub_const "User::MAX_FILE_SIZE", 1.bytes.to_i
  end
  it do
    # test something
  end
end
Run Code Online (Sandbox Code Playgroud)

第一次测试通过了。但是,由于 MAX_FILE_SIZE 未更改,第二次测试失败。

你能告诉我为什么吗?以及如何解决这种情况。

rspec ruby-on-rails

6
推荐指数
1
解决办法
4910
查看次数

标签 统计

rspec ×1

ruby-on-rails ×1