感叹号在其参数中与assert方法一起使用

Max*_*xsy 2 ruby ruby-on-rails

好吧,这已经在我的脑海中徘徊了一段时间了.在ruby on rails单元测试中,有一个带有assert方法的感叹号.这是一个例子

test "No empty values to be inserted" do 
   product = Produce.new
   assert !product.save
end
Run Code Online (Sandbox Code Playgroud)

让我知道感叹号的功能.快速回复表示赞赏.谢谢.

Way*_*rad 6

! 是逻辑否定.

  • 如果product.save是真实的(也就是说,既不是nil也不是false),则!product.save返回false.
  • 如果product.save是假的(即nil或false),则!product.save返回true.

因此,assert !product.save意味着product.save必须返回falsy才能通过测试.