0
在我的控制器規範中,除了創建操作外,一切正常(更新操作,編輯操作等也通過js請求)。出於某種原因,它不會更改Task.count
,但http響應是200
。js請求的rspec控制器規範
沒有其他的回調,並在開發ENV它將任務保存在分貝。該工廠通過型號規格。我也試圖註釋掉Notification.create
,TaskCreatorJob
和Conversation.create..
,但沒有幫助。在我的其他控制器規格中,expect { create_action }.to change{Class.count}.by(1)
正常工作。
我錯過了什麼?
電腦板
def create
@task = Task.new(task_params)
@task.assigner_id = current_user.id
if @task.save
Notification.create(recipient_id: @task.executor_id, sender_id: current_user.id, notifiable: @task, action: "assigned")
TaskCreatorJob.perform_later(@task, @task.executor, @task.assigner)
Conversation.create_or_find_conversation(@task.assigner_id, @task.executor_id)
respond_to do |format|
format.js
end
else
respond_to do |format|
format.js
end
end
end
工廠
factory :task do
content { Faker::Lorem.sentence }
deadline { Faker::Time.between(DateTime.now + 2, DateTime.now + 3) }
association :executor, factory: :user
association :assigner, factory: :user
end
tasks_controller_spec.rb
.....
before(:each) do
login_user
end
describe "POST create" do
context "with valid attributes" do
let!(:user) { create(:user) }
let!(:profile) { create(:profile, user: @user) }
let!(:profile_2) { create(:profile, user: user) }
let!(:conversation) { create(:conversation, sender: @user, recipient: user) }
subject(:create_action) { xhr :post, :create, user_id: @user.id, task: attributes_for(:task, assigner: @user, executor: user) }
it "saves the new task in the db" do
expect{ create_action }.to change{ Task.count }.by(1)
end
it "responds with success" do
create_action
expect(response).to have_http_status(200)
end
end
end