无法在 Grape::API class 中存根 Rails.env
Cannot stub Rails.env inside Grape::API class
我正在尝试对 class 中的任何内容进行存根:
module V1
class API < Grape::API
use V1::Middleware::ApiLogger if Rails.env.production?
及之后的规范:
allow(Rails).to receive(:env).and_return(double(production?: true))
或
allow(Rails.env).to receive(:production?).and_return(true)
或
allow(Rails).to receive(:env) { "production".inquiry }
和
expect do
get "/api/v1/profiles/#{profile_alex.id}"
end.to change(ApiLog, :count).by 1
什么都不起作用,即使在 API class 中存根实例方法也不起作用
有人遇到过同样的问题吗?
我找到问题了。
这与 Grape 预加载 API class 的方式有关,它使用在代码加载时运行的装载方法,并且存根在条件之后 运行,因此检查对于环境,应进入中间件方法。
我正在尝试对 class 中的任何内容进行存根:
module V1
class API < Grape::API
use V1::Middleware::ApiLogger if Rails.env.production?
及之后的规范:
allow(Rails).to receive(:env).and_return(double(production?: true))
或
allow(Rails.env).to receive(:production?).and_return(true)
或
allow(Rails).to receive(:env) { "production".inquiry }
和
expect do
get "/api/v1/profiles/#{profile_alex.id}"
end.to change(ApiLog, :count).by 1
什么都不起作用,即使在 API class 中存根实例方法也不起作用
有人遇到过同样的问题吗?
我找到问题了。
这与 Grape 预加载 API class 的方式有关,它使用在代码加载时运行的装载方法,并且存根在条件之后 运行,因此检查对于环境,应进入中间件方法。