Неправильная заглушка модели при тестировании контроллеров, использующих атрибут - PullRequest
1 голос
/ 27 июля 2011

Я новичок в RSpec, и мои контроллеры используют значение атрибута улиц наследования, у меня есть такая настройка макета / заглушки, как:

describe MarketsController do
  def mock_market(stubs={})
    @mock_market ||= mock_model(Market, stubs).as_null_object
  end

  describe "GET index" do
    it "assigns all markets as @markets" do
      Market.stub(:all){ [mock_market] }
      get :index

      assigns(:markets).should eql([mock_market])
    end
  end
end

И эта спецификация не работает, потому что в присвоениях ничего нет (: markets).После того, как я добавил:

class MarketsController
    def index
        @markets = Market.all
    end
end

, он пройдет, так что, я думаю, это потому, что в атрибутетекавые_ресурсы не вызывается Market.all , чтобы получить весь экземпляр Market и, таким образом, обойти заглушку для Market.stub (: все) .Метод index , который я добавил выше, явно избыточен и вообще не должен существовать, поэтому вопрос, без явного вызова Market.all, что мне делать в моей спецификации для завершения тестов?Заранее спасибо!

1 Ответ

1 голос
/ 27 июля 2011

Если я правильно читаю код, inherited_resources сначала пытается использовать Market.scoped, если он существует. Так у вас есть scoped сфера?

...