gpt4 book ai didi

testing - 指定简单模型方法的方法

转载 作者:行者123 更新时间:2023-11-28 20:47:45 26 4
gpt4 key购买 nike

现在我有一个类似这样的模型函数:

Class Address
def first_line
"#{self.building_name} #{self.street_name} #{self.suburb}".squeeze(" ").strip
end
end

我的地址工厂是这样定义的:

Factory.define :address do |f|
f.building_name "Alpha"
f.street_name "Bravo St"
f.suburb "Charlie"
end

基本上有两种写规范的方法,第一种是:

before(:each) do
@address = Factory.build(:address)
end

@address.first_line.should == @address.building_name + " " +
@address.street_name + " " +
@address.suburb

另一种方式是

@address.first_line.should == "Alpha Bravo St Charlie"

你觉得哪种方式更好?支持一个反对另一个的原因是什么?

最佳答案

都没有。第一个有点冗长,而且感觉与该方法的实现有点太过分了。第二个将您的规范与您的工厂紧密耦合,当您需要更改工厂时将是一个巨大的痛苦。

相反,使用短的第二个样式,但在规范中明确使用的数据:

@address = Factory.build(:address, :building_name => "Alpha",
:street_name => "Bravo St.",
:suburb => "Charlie")

@address.first_line.should == "Alpha Bravo St. Charlie"

这也很好,因为您可以向该方法提供不同的测试数据,这是测试它的一些其他功能所必需的:

@address = Factory.build(:address, :building_name => "Alpha    ",
:street_name => " Bravo St. ",
:suburb => " Charlie " )

@address.first_line.should == "Alpha Bravo St. Charlie"

关于testing - 指定简单模型方法的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/851618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com