Кто-нибудь знает, почему я получаю эту ошибку RSpec? получить ноль <- - PullRequest
2 голосов
/ 02 сентября 2010
def mock_category(stubs={})
  @mock_category ||= mock_model(Category, stubs).as_null_object
end

describe "GET show" do
  it "assigns the requested category as @category" do
    Category.stub(:find).with("37") { mock_category }
    get :show, :id => "37"
    assigns(:category).should be(mock_category)
  end
end

Что возвращает:

1) CategoriesController GET show assigns the requested category as @category
   Failure/Error: assigns(:category).should be(mock_category)
   expected Category_1002, got nil

Я запутался здесь, потому что это стандартный контроллер, который rspec настроил. Почему это может не сработать?

Мои версии:

Rails 3.0.0.beta4
Ruby 1.8.7
RSpec 2.0.0.beta.10

Также пробовал это, точно такую ​​же воспроизводимую ошибку с:

Rails 3.0.0
Ruby 1.8.7
RSpec 2.0.0.beta.20

Команда, которую я использовал для генерации спецификаций, была rails g scaffold Category

В моем приложении. Rb

config.generators do |g|
  g.template_engine :haml
  g.test_framework :rspec, :fixture => true, :views => false
end

UPDATE

Это относится к любому контроллеру лесов в Rails 3 с RSpec2. Его гарантированно не получится. Кто-нибудь знает, как это должно быть написано?

Ответы [ 2 ]

1 голос
/ 02 сентября 2010

У rspec-rails есть набор спецификаций, который он запускает против себя, который использует все генераторы и запускает все сгенерированные спецификации, и они все проходят, так что это должно работать.Какие версии rspec, rails и ruby ​​вы используете?Какие команды вы использовали для генерации модели Category и CategoriesController?

0 голосов
/ 04 сентября 2010

Конфликт возникает из-за конфликтов, возникших между Rspec Beta 10 и Rspec Beta 20 и Rails 3 Beta4, до версии Rails 3.

Чтобы решить эту проблему, я удалил haml и установил haml-rails.

Затем я удалил все спецификации, которые были сгенерированы ранее, и восстановил их.

...