Не удается заглушить Rails.env внутри класса Grape :: API - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь заглушить все, что внутри этого класса:

module V1
    class API < Grape::API    
      use V1::Middleware::ApiLogger if Rails.env.production?

и после в спецификации c:

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 не будет работать

Кто-нибудь сталкивался с такой же проблемой?

1 Ответ

0 голосов
/ 26 февраля 2020

Я нашел проблему.

Это было связано с тем, как класс API предварительной загрузки Grape, он использует метод mount, который запускается, когда код загружается, а заглушка запускается после условий, поэтому проверяет среда должна go внутри методов Middleware.

...