Kat*_*ida 6 rspec ruby-on-rails
我的模型有这样的自定义验证。
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 未更改,第二次测试失败。
你能告诉我为什么吗?以及如何解决这种情况。
该文档表示,示例运行后常量值会重置https://relishapp.com/rspec/rspec-mocks/v/2-11/docs/stubbing-constants/stub-define-constant
您是否尝试过在示例中存根常量?
context "MAX_FILE_SIZE is 1byte" do
it do
stub_const "User::MAX_FILE_SIZE", 1.bytes.to_i
# test something
end
end
Run Code Online (Sandbox Code Playgroud)