Я до сих пор довольно новичок в тестировании и все еще обволакиваю голову Factory Factory, которая, как я считаю, является виновником этой неудачи. Проще, как решение, вероятно, будет, я искал другие сообщения с тем же сообщением об ошибке, но ответы не работают на меня.Ошибка тестирования контроллера Factory Girl & Rspec
Я решил изучить BDD/TDD, создав это простое приложение для блога. Вот сообщение об ошибке:
Failures:
1) PostsController POST create creates a post
Failure/Error: expect(response).to redirect_to(post_path(post))
Expected response to be a <redirect>, but was <200>
Тест:
RSpec.describe PostsController, :type => :controller do
let(:post) { build_stubbed(:post) }
describe "POST create" do
it "creates a post" do
expect(response).to redirect_to(post_path(post))
expect(assigns(:post).title).to eq('Kicking back')
expect(flash[:notice]).to eq("Your post has been saved!")
end
end
end
Моя фабрика Девочка файл:
FactoryGirl.define do
factory :post do
title 'First title ever'
body 'Forage paleo aesthetic food truck. Bespoke gastropub pork belly, tattooed readymade chambray keffiyeh Truffaut ennui trust fund you probably haven\'t heard of them tousled.'
end
end
Контроллер:
class PostsController < ApplicationController
def index
@posts = Post.all.order('created_at DESC')
end
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
flash[:notice] = "Your post has been saved!"
else
flash[:notice] = "There was an error saving your post."
end
redirect_to @post
end
def show
@post = Post.find(params[:id])
end
private
def post_params
params.require(:post).permit(:title, :body)
end
end
В случае, если это уместно, вот мой Gemfile:
gem 'rails', '4.1.6'
...
group :development, :test do
gem 'rspec-rails', '~> 3.1.0'
gem 'factory_girl_rails', '~> 4.5.0'
gem 'shoulda-matchers', require: false
gem 'capybara'
end
Любая помощь приветствуется.
Благодарим за отзыв! Я определенно согласен, что эти ожидания выглядят лучше разделенными. Я попробовал их, и первая спецификация прошла, но вторая из них все еще терпит неудачу: 'Failure/Error: post: create, event: attributes_for (: post) ActionController :: ParameterMissing: Параметр отсутствует или значение пуст: post' – shroy
Упс - обновил мой ответ ... Скопируйте и вставьте жертву: ^) – patrick
Приятно снова увидеть зеленый! Спасибо, Патрик! – shroy