ruby中的不同测试关键字?描述vs测试

时间:2014-11-15 02:51:02

标签: ruby

我对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 优点和缺点?

3 个答案:

答案 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。