Переключение работает в контроллере, но не в Spec: Rails 3 + Rspec - PullRequest
1 голос
/ 02 мая 2011

Данный метод подтверждения:

  if (@bucket.confirmation_code == @code)
      puts "OLAAA"
      @bucket.toggle!(:confirmation)
      @bucket.save
      flash[:success] = "Successfully confirmed bucket."
      redirect_to bucket_url(@bucket)
    else
      flash[:fail] = "Error confirming bucket."
      redirect_to bucket_url(@bucket)
    end

У меня есть тестирование спецификации, если оно переключает атрибут подтверждения, но даже если в контроллере все работает (confirmation == true), тест не пройден (confirmation == false вместо true).

Тест как:

it "should have a confirmation URL" do
        @attr3 = {:email => "test@testing.com", :confirmation_code => "ola123"}
        post :create, :bucket => @attr3
        @bucket = Bucket.last
        post :confirm, :id => @bucket.id, :code => "ola123"
        @bucket.save 
        @bucket.confirmation.should == true
      end

1 Ответ

1 голос
/ 02 мая 2011

Вместо @bucket.save, который не нужен, поскольку ваш метод контроллера уже сделает это, выполните @bucket.reload, который повторно запросит базу данных о текущих значениях (которые изменились с тех пор, как вы впервые присвоили @bucket = Bucket.last). Тогда ваше confirmation значение должно вернуть true.

...