Ruby 为什么Minitest似乎并不总是报告';实际';测试结果如何?

Ruby 为什么Minitest似乎并不总是报告';实际';测试结果如何?,ruby,minitest,Ruby,Minitest,为什么MiniTest有时会真正显示“实际”的内容,有时只显示nil/空白/引号 示例-我知道a.join的值在两行上显示“Hi”,其中一行为空行 class Question def stack "Hi\n" \ "Hi\n" end def overflow a = [] a << stack + "\n" # This + "\n" is in question a.join # This

为什么MiniTest有时会真正显示“实际”的内容,有时只显示nil/空白/引号

示例-我知道a.join的值在两行上显示“Hi”,其中一行为空行

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
这种情况我已经见过好几次了。我永远不知道我是否真的有一个零的结果,或者如果Minitest只是出于某种原因再次对我“撒谎”


Thx一如既往

Minitest的输出是预期结果和实际结果的组合(我认为它实际上调用了外部
diff
命令)。没有单独的“预期”和“实际”部分,而是以显示差异的格式混合在一起

在这种情况下,当您删除““\n”时,故障如下所示:

1)故障:
测试经文[Foo.rb:22]:
---期望
+++实际的
@@ -1,4 +1,3 @@
“嗨
你好
-
"
---expected
++actual
表示在差异中(在
@…
行之后显示),以
-
开头的行预期会出现,但不会出现,而以
+
开头的行则出现在结果中,但不应该出现。在本例中,有一个以
-
开头的空行。这意味着一个换行符应该出现在输出中,但没有出现。这对应于您删除的
+“\n”
,但测试是预期的。
-
行后一行的引号是整个差异的结束引号,而不是“预期”部分的内容

当您将
overflow
方法的返回值更改为
“Tadah!”
时,失败消息如下所示:

1)故障:
测试经文[Foo.rb:23]:
---期望
+++实际的
@@ -1,4 +1 @@
-“嗨
-嗨
-
-"
+“塔达!”

查看以
-
开头的行,您可以看到整个预期消息丢失,而以
+
开头的行显示有一个额外的行包含
Tadah。这种情况也有所不同,因为Minitest将输出显示为两个单独的字符串(请注意两组单独的引号)。

能否显示得到的结果和期望的结果?这对我来说似乎没问题。它可以正常工作。但是,如果我改变
一个So-minitest看一整行,并说,“如果这两行是相同的,那么不要麻烦显示它。”因此,它保持“安静”,直到它点击新行代码并意识到事情是不同的,并显示它实际得到了什么?我仍然不知道为什么它至少不会给我一个
+
的实际值(就像“Tadah!”一样,尽管vs完全是空的。)当我看到Minitest时,它不会给我一个
+
的实际值,应该立即知道这是换行符问题吗?@tonydinito以
-
+
开头的行的实际结果与预期结果不同。如果实际结果与预期结果相同,则不标记行。只有缺少或多余的部分才会突出显示。
def test_verses
  expected = "Hi\n" \
  "Hi\n\n"
  assert_equal expected, Question.new.overflow
end