rspec ruby ​​на рельсах новичок вопрос про контроллеры - PullRequest
0 голосов
/ 08 сентября 2011

Я новичок в RoR или rspec и пытаюсь его освоить. Прежде всего, я не могу найти учебники для новичков, только для продвинутых, потому что я хочу изучать RoR и в то же время учиться тестировать. Я пишу тест для простых контроллеров CRUD, но я не знаю, как, например, проверить, переданы ли параметры в мое действие создания, а также сохранено ли оно.

def create
    @item = TextItem.new(params[:item])

    if @item.save
       redirect_to(:action => 'index')
    else
       render('new')
      end
  end

1 Ответ

0 голосов
/ 09 сентября 2011

Я думаю, что лучший способ - познакомиться с рельсами и рубином, и только потом погрузиться в tdd / bdd с помощью test / unit или minitest или rspec, огурца или множества других методов тестирования.

Я рекомендуюВы должны купить книгу / книгу, чтобы начать, например, этот Agile rails development с rails , книга всего за $ 24.Вы сэкономите много времени.

Иногда Rspec немного сложен / волшебен, и без базовых знаний о rails / ruby ​​может быть сложно начать использовать.

Я не предлагаю вам изучать рельсы и rspec за одну попытку.

Кстати, спецификации для этого действия могут быть такими:

  describe "POST create" do
    let(:item) { mock_model(TextItem) }

    before(:each) do
      TextItem.stub(:new).and_return(item)
    end

    it "saves the item" do
      item.should_receive(:save)
      post :create
    end

    context "when the item saves successfully" do
      before(:each) do
        item.stub(:save).and_return(true)
      end

      it "redirects to the items index" do
        post :create
        response.should redirect_to(:action => "index")
      end
    end

    context "when the item fails to save" do
      before(:each) do
        item.stub(:save).and_return(false)
        item.stub_chain(:errors, :empty?).and_return(false)
      end

      it "renders the new template" do
        post :create
        response.should render_template(:new)
      end
    end
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...