考虑这个例子,我们想检查是否允许用户使用空白名称(不应该):
test "name should be present" do
@user.name = " "
assert_not @user.valid?
end
问题是为什么assert_not
存在?如果我们像这样使用assert
会不会更好:
test "name should be present" do
@user.name = " "
assert !@user.valid?
end
答案 0 :(得分:3)
可能存在从断言中删除修饰符,这可能会改变其结果或模糊您实际要求的内容。实际上,它主要是一种风格选择。
在语言中使用unless
的动机是相同的,而不是写这个:
if !@user.valid?
# do stuff
end
你会这样做:
unless @user.valid?
# do stuff
end
当然,if / unless差异读取方式比assert_not
更好,唉,Minitest单元测试会给你带来什么。如果您想更自然地阅读内容,请查看Minitest规范或RSpec。