rails matchers bot rspec rspec2 rspec-rails

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''