我对Ruby中的RSpec / Integration测试感到有些困惑。
我注意到一些测试从关键字测试开始,有些测试从描述开始?主要区别是什么?这一切都是RSpec?
例如
test "email should be present" do
@user.email = " "
assert_not @user.valid?
end
和
describe 'can set' do
it 'calories' do
@dessert.calories = 80
end
end
编辑: MiniTest与RSpec 优点和缺点?
答案 0 :(得分:4)
test
... assert
语法是MiniTest的典型语法,有时也称为测试单元。
describe
... it
语法是RSpec的典型语法。
也就是说,MiniTest有两种语法,具体取决于您的个人偏好:
test
... assert
这是经典语法;这是Rails用于内部测试的一个。
describe
... it
语法,称为MiniTest Spec;它非常类似于RSpec语法的直接子集。
如果您正在处理现有项目,最好使用与项目其余部分相同的语法编写,这样您的团队成员就可以轻松阅读语法。
(你的编辑要求优点和缺点 - 这是一个更适合谷歌搜索而不是Stack Overflow的问题,因为它有很多话要说,并且有很多强烈的意见。两者都是很好的选择,而且在大多数情况下使用项目已经使用的任何项目,或者你的队友都知道最好的项目你会做得很好。)
答案 1 :(得分:1)
如果您问为什么/如何使用describe:
describe很有用,因为你可以测试几个相关的东西而不用重复自己。例如,如果你想测试沙漠可以设定卡路里和味道,你可以这样做:
describe 'desserts' do
it 'can set calories' do
@dessert.calories = 80
...test...
end
it 'can set taste' do
@dessert.taste = 'delicious'
...test...
end
end
如果失败,您将收到类似&#34的消息;失败的甜点可以设置卡路里......"
而不是:
it 'dessert can set calories' do
@dessert.calories = 80
...test...
end
it 'dessert can set taste' do
@dessert.taste = 'delicious'
...test...
end
它的可读性较差,你正在重复甜点这个词。
答案 2 :(得分:0)
test
语法来自ruby标准库中的MiniTest(旧版Ruby中的Test :: Unit)。 describe
/ it
来自Rspec。