RoR 教程 - 直接测试 full_title 助手

RoR Tutorial - A direct test the full_title helper

我正在做 RoR 教程第 5 章练习,我似乎无法弄清楚用什么文本代替 "FILL_IN" 我已经尝试通过匹配来阅读错误消息实际与预期。我究竟做错了什么?另外,有人可以解释 <expected><actual> 在这个测试中是如何工作的吗,因为我在任何地方都看不到 "expected" 或 "actual" 这两个词。

require 'test_helper'

class ApplicationHelperTest < ActionView::TestCase
  test "full title helper" do
    assert_equal full_title,         "Kim's Cool Rails Site"
    assert_equal full_title("Help"), "Kim's Cool Rails Site | Help"
  end
end

谁能解释一下 <expected><actual> 是如何工作的

通常尖括号之间的术语,如 <expected><actual> 表示需要替换的值。在这种情况下,它提到:

assert_equal <expected>, <actual>

给出了assert_equal方法所取参数的描述。我们打算用我们的 real-life 值替换它们。例如,

result = 1 + 1
assert_equal 2, result

在这里,我们将 <expected> 替换为 2,并将 <actual> 替换为 result,以测试 1 + 1 = 2,正如我们预期的那样。

我似乎想不出用什么文字来代替 "FILL_IN"

因此您代码中的相关行是:

assert_equal full_title, FILL_IN
assert_equal full_title('help'), FILL_IN

在这两行中,您应该将 FILL_IN 替换为前一个参数的任何结果 - 在本例中,full_titlefull_title('help')

所以,如果full_title给出"Kim's Cool Rails Site",那么第一行应该是:

assert_equal full_title, "Kim's Cool Rails Site"

如果full_title('Help')给出"Kim's Cool Rails Site | Help",那么第二行应该是:

assert_equal full_title('Help'), "Kim's Cool Rails Site | Help"

** 更新 **

所以你得到的错误基本上是说:我们希望看到 "Ruby on Rails Tutorial Sample App" 而不是我们说 "Kim's Cool Rails Site".

在我给出的例子中,我只是用"Kim's Cool Rails Site"作为例子,因为我不知道你网站的实际标题。您需要将 "Kim's Cool Rails Site" 替换为您网站的实际标题(即 full_path return)。因此,从错误消息来看,第一行所需的确切代码将是:

assert_equal full_title, "Ruby on Rails Tutorial Sample App"

您需要自己找出第二行所需的确切文本,但基本上只需将 "Kim's Cool Rails Site | Help" 替换为您期望的 full_title('Help') 到 [=71] =].

我相信这就是您想要的....

require 'test_helper'

class ApplicationHelperTest < ActionView::TestCase
  test "full title helper" do
    assert_equal full_title,          "Ruby on Rails Tutorial Sample App"
    assert_equal full_title("Help"),  "Help | Ruby on Rails Tutorial Sample App"
  end
end