【发布时间】:2016-07-27 08:26:35
【问题描述】:
如何为更新字符串属性编写 Rspec 测试? 我有属性:“状态”和数组 = ['First','Second'] - model Post
it "update status attribute" do
expect(@result).to change(Post, :status)
end
对吗?
我的交互者:
class User::Post::RequestVerification < ActiveInteraction::Base
object :user
string :status, default: nil
integer :id, default: nil
validate :status
def execute
update_status!
end
def post
@post ||= post.find(id)
end
def update_status!
@post.update_atrributes!(
status: ['First', 'Second']
)
end
def status
errors.add(:base, 'error')
end
end
我的 RspecTest:
require 'rails_helper'
describe User::Post::RequestVerification do
before do
@result = User::Post::RequestVerification.run(new_params[:post])
end
let!(:user) {Post.new}
let!(:user) { User.create }
let!(:new_params) do
{
post: {
status: 'First'
}
}
end
it "should update status" do
expect(@result).to change(Post, :status)
end
end
我想写一个测试来更新一个属性。
【问题讨论】:
-
你运行了吗?您看到什么错误或意外输出?
-
expected #status to have changed, but was not given a block和 binding.pry@details={:base=>[{:error=>"error"}, {:error=>"error"}], :status=>[{:type=>"string", :error=>:invalid_type}]}, @messages={:base=>["error", "error"], :status=>["is not a valid string"]}>
标签: ruby-on-rails rspec tdd