Спецификация запроса Rails не делает запрос на размещение - PullRequest
1 голос
/ 20 января 2012

Я решил написать некоторые спецификации запросов, в дополнение к моим сценариям с огурцами. Но не удалось в моем первом примере:

Таким образом, в моем goalController есть метод put:

   def achieve
        @goal.update_attribute(:achieved, true)
        redirect_to :back
   end

А это пример:

# -*- coding: utf-8 -*-
require 'spec_helper'

describe "Achievements" do
  before(:all) do
    @bob = Factory(:user, :email => "bob@mail.com", :password => "qweqwe", :password_confirmation => "qweqwe", :money => 500)
    @achieve = Factory(:goal, :user => @bob, :title => "Notebook", :price => 100, :achieved => false)
    login_user('bob@mail.com', 'qweqwe')
  end
    it 'can not be achieved twice' do
      visit dashboard_path
      put achieve_user_goal_path(@bob, @achieve) #Passes it well
      @achieve.reload #same with or without this line
      @achieve.achieved.should equal true #Fails
    end
end

Таким образом, после выставленного запроса поле «выполняется» становится истинным. Он отлично работает в моем приложении и на этапе огурца, но не в этом примере rspec. Это как rspec просто игнорирует строку с «пут».

1 Ответ

0 голосов
/ 20 января 2012

Если я понимаю, как это работает правильно, RSpec использует помощники Test :: Unit из Rails.Если читает имя контроллера из того, что вы описываете, то вам нужно будет describe AchievementsController, а не просто какая-то строка.Вы не заходите на страницу, затем отправляете put, вы просто описываете контроллер и отправляете put.

Тем не менее, когда вы используете помощников по тестированию на интеграцию капибары, помощников по модульному тестированию типа put и get, вероятно, не делают то, что вы хотите, так как они будут выполняться вне контекста драйвера браузера.Вы должны дать команду Capybara щелкнуть нужную ссылку или кнопку (или выполнить любое действие, которое выполняет пользователь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...