为什么 'assert_not' 而不是 '!'在编写 Rails 测试时?
Why 'assert_not' and not '!' when writing Rails tests?
考虑这个例子,我们想检查是否允许用户使用空白名称(不应该):
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
它可能存在用于从您的断言中删除修饰符,这可能会改变它们的结果或模糊您的实际要求。实际上,这主要是一种风格选择。
这与在语言中使用 unless
的动机相同,而不是这样写:
if !@user.valid?
# do stuff
end
你会做:
unless @user.valid?
# do stuff
end
诚然,if/unless 差异 比 assert_not
好 ,唉,这就是 Minitest 单元测试将为您提供的。如果您希望阅读起来更自然,请查看 Minitest 规格或 RSpec.
考虑这个例子,我们想检查是否允许用户使用空白名称(不应该):
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
它可能存在用于从您的断言中删除修饰符,这可能会改变它们的结果或模糊您的实际要求。实际上,这主要是一种风格选择。
这与在语言中使用 unless
的动机相同,而不是这样写:
if !@user.valid?
# do stuff
end
你会做:
unless @user.valid?
# do stuff
end
诚然,if/unless 差异 比 assert_not
好 ,唉,这就是 Minitest 单元测试将为您提供的。如果您希望阅读起来更自然,请查看 Minitest 规格或 RSpec.