【发布时间】:2014-09-24 07:50:26
【问题描述】:
我已经看过很多关于此的帖子,但似乎没有一个解决方案适用于此应用程序。我有一个事务脚本 CreateContact,它在添加到数据库时返回一个成功对象:
class CreateContact < TransactionScript
def run(params)
contact = Contact.create(params)
return success(contact: contact)
end
end
这是我的测试代码:
require 'spec_helper'
describe CreateContact do
it_behaves_like('TransactionScripts')
let(:script) {CreateContact.new}
it "creates a contact" do
contact = CreateContact.run({:name=>'contact1', :email=>'me@email.com', :phoneNum=>'1234567'})
expect(contact.success?).to eq(true)
expect(contact.name).to eq('contact1')
expect(contact.email).to eq('me@email.com')
expect(contact.phoneNum).to eq('1234567')
end
end
我尝试了几种解析为哈希或 JSON 的方法:在 Contact.create 中拆分 params 哈希,将“.to_json”和“JSON.parse”添加到成功对象值中,在整个成功时调用两者对象,并调用 '.to_a.map(&:serializable_hash)'。我还尝试在 '.property'、'[:key]' 和 '['property']' 格式之间转换测试代码属性。 '['property']' 是唯一一个似乎返回任何东西的,但它只返回“property”(而不是一个值)。
运行测试时,我实际上可以看到 ActiveRecord 对象已成功创建,如果我在 binding.pry 中调用它们,其中一些技术将解析,但是当我尝试在代码中实现它们时,测试仍然出现零值。谁能看到我做错了什么?
【问题讨论】:
标签: ruby-on-rails ruby json activerecord rspec