说例如我在我的Rails应用程序中有两个类 - Customer类和一个Card类。客户类由一个卡类组成,即客户拥有一张卡。如何使用RSpec测试组合对象属性的设置?
然后我有一个定义了'do_something'动作的Rails控制器,它将使用传递给POST的参数初始化Customer的新实例(反过来将在内部创建一个新的Card实例)。
卡的数量则设置如下:
class ShopController < ApplicationController
def do_something
customer = Customer.new params
customer.card.number = params[:card_number]
...
end
end
如何卡号的这种分配在一个RSpec测试测试?理想情况下,如果'should_receive_chain'存在,我们可以写:
describe MyController do
describe "POST 'do_something'" do
it "should set card number"
params = { :card_number => '1234' }
card_mock.should_receive_chain(:card, :number).with '1234'
post :do_something
end
end
end
任何想法?也许它不能被轻松测试的事实是代码味道,也许我应该在Customer类中创建一个setter方法?