为什么 Minitest 似乎并不总是报告测试的 'Actual' 结果是什么?
Why does Minitest seem to not always report what the 'Actual' results of the test are?
为什么 MiniTest 有时会真正显示 'Actual' 而有时只会显示 nil/blank/quote。
示例 - 我知道 a.join 的值有 "Hi" 显示在 2 行和一个空行上。
class Question
def stack
"Hi\n" \
"Hi\n"
end
def overflow
a = []
a << stack + "\n" # This + "\n" is in question
a.join # This is "hi"s
end
end
a = Question.new
puts a.overflow
如果我取出 + "\n"
,测试会说 "Actual" 只是一个引号,而不是它的实际含义("Hi" 打印在 2 行上)。如果我将 'a.join' 替换为 "Tadah!",那么 Minitest 将在 "Actual" 下显示 "Tadah!"。
我有以下测试:
def test_verses
expected = "Hi\n" \
"Hi\n\n"
assert_equal expected, Question.new.overflow
end
这种情况我见过好几次了。我永远不知道我是否真的没有结果,或者 Minitest 是否由于某种原因再次对我来说 "lying"。
一如既往的感谢!
Minitest 的输出是预期结果和实际结果的 diff(我认为它实际上调用了外部 diff
命令)。没有单独的“预期”和“实际”部分,它们以显示差异的格式混合在一起。
在这种情况下,当您删除 `"\n" 时,失败如下所示:
1) Failure:
Foo#test_verses [foo.rb:22]:
--- expected
+++ actual
@@ -1,4 +1,3 @@
"Hi
Hi
-
"
--- expected
和 +++ actual
表示在差异中(显示在 @@...
行之后)以 -
开头的行预计会出现但没有出现't,以及以 +
开头的行出现在结果中但不应该出现。在此示例中,有一个以 -
开头的空行。这意味着换行符预计会出现在输出中,但实际上并没有。这对应于您删除的 + "\n"
,但测试符合预期。 -
行之后的引号是整个差异的结束引号,而不是“预期”部分的内容。
当您将 overflow
方法的 return 值更改为 "Tadah!"
时,失败消息如下所示:
1) Failure:
Foo#test_verses [foo.rb:23]:
--- expected
+++ actual
@@ -1,4 +1 @@
-"Hi
-Hi
-
-"
+"Tadah!"
查看以 -
开头的行,您可以看到整个预期的消息都丢失了,而以 +
开头的行显示有一个包含 Tadah!
的额外行。这种情况的不同之处还在于 Minitest 将输出显示为两个单独的字符串(注意两组单独的引号)。
为什么 MiniTest 有时会真正显示 'Actual' 而有时只会显示 nil/blank/quote。
示例 - 我知道 a.join 的值有 "Hi" 显示在 2 行和一个空行上。
class Question
def stack
"Hi\n" \
"Hi\n"
end
def overflow
a = []
a << stack + "\n" # This + "\n" is in question
a.join # This is "hi"s
end
end
a = Question.new
puts a.overflow
如果我取出 + "\n"
,测试会说 "Actual" 只是一个引号,而不是它的实际含义("Hi" 打印在 2 行上)。如果我将 'a.join' 替换为 "Tadah!",那么 Minitest 将在 "Actual" 下显示 "Tadah!"。
我有以下测试:
def test_verses
expected = "Hi\n" \
"Hi\n\n"
assert_equal expected, Question.new.overflow
end
这种情况我见过好几次了。我永远不知道我是否真的没有结果,或者 Minitest 是否由于某种原因再次对我来说 "lying"。
一如既往的感谢!
Minitest 的输出是预期结果和实际结果的 diff(我认为它实际上调用了外部 diff
命令)。没有单独的“预期”和“实际”部分,它们以显示差异的格式混合在一起。
在这种情况下,当您删除 `"\n" 时,失败如下所示:
1) Failure:
Foo#test_verses [foo.rb:22]:
--- expected
+++ actual
@@ -1,4 +1,3 @@
"Hi
Hi
-
"
--- expected
和 +++ actual
表示在差异中(显示在 @@...
行之后)以 -
开头的行预计会出现但没有出现't,以及以 +
开头的行出现在结果中但不应该出现。在此示例中,有一个以 -
开头的空行。这意味着换行符预计会出现在输出中,但实际上并没有。这对应于您删除的 + "\n"
,但测试符合预期。 -
行之后的引号是整个差异的结束引号,而不是“预期”部分的内容。
当您将 overflow
方法的 return 值更改为 "Tadah!"
时,失败消息如下所示:
1) Failure:
Foo#test_verses [foo.rb:23]:
--- expected
+++ actual
@@ -1,4 +1 @@
-"Hi
-Hi
-
-"
+"Tadah!"
查看以 -
开头的行,您可以看到整个预期的消息都丢失了,而以 +
开头的行显示有一个包含 Tadah!
的额外行。这种情况的不同之处还在于 Minitest 将输出显示为两个单独的字符串(注意两组单独的引号)。