matchers - rspec rails 5
simular Rails.env.development? utilizando rspec (2)
Deberías pegarle dentro, let
, before
bloques. Mueve tu código allí y funcionará
Y este código funciona en mis pruebas (tal vez su variante también puede funcionar)
Rails.env.stub(:development? => true)
por ejemplo
describe "in dev mode" do
let(:mail) { Notifier.welcome_signup user }
before { Rails.env.stub(:development? => true) }
it "send an email to" do
expect(mail.to).to eq([GlobalConstants::DEV_EMAIL_ADDRESS])
end
end
Estoy escribiendo una prueba unitaria usando rspec.
Me gustaría burlarme de Rails.env.develepment? para devolver la verdad. ¿Cómo podría lograr esto?
Probé esto
Rails.env.stub(:development?, nil).and_return(true)
arroja este error
activesupport-4.0.0/lib/active_support/string_inquirer.rb:22:in `method_missing'': undefined method `any_instance'' for "test":ActiveSupport::StringInquirer (NoMethodError)
Actualice la versión ruby ruby-2.0.0-p353, rieles 4.0.0, rspec 2.11
describe "welcome_signup" do
let(:mail) { Notifier.welcome_signup user }
describe "in dev mode" do
Rails.env.stub(:development?, nil).and_return(true)
let(:mail) { Notifier.welcome_signup user }
it "send an email to" do
expect(mail.to).to eq([GlobalConstants::DEV_EMAIL_ADDRESS])
end
end
end
Hay una manera mucho mejor descrita aquí: https://.com/a/24052647/362378
it "should do something specific for production" do
allow(Rails).to receive(:env) { "production".inquiry }
#other assertions
end
Esto proporcionará todas las funciones como Rails.env.test?
y también funciona si solo comparas las cadenas como Rails.env == ''production''