RoR教程-直接测试full_title助手

Kim*_*Kim 0 ruby ruby-on-rails railstutorial.org

我正在进行RoR教程第5章的练习,但似乎无法弄清楚使用什么文本代替“ FILL_IN”,我试图通过尝试使实际值与预期值相匹配来读取错误消息。我究竟做错了什么?此外,有人可以解释如何<expected><actual>工作在这个测试中,因为我看不到“预期”字样或“实际”的任何地方。

RoR教程中的说明

RoR教程中的代码图片

我的错误消息代码

建议更改导致的错误消息

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
Run Code Online (Sandbox Code Playgroud)

jos*_*ing 5

有人可以解释如何<expected><actual>工作

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

assert_equal <expected>, <actual>
Run Code Online (Sandbox Code Playgroud)

给出了该assert_equal方法采用的参数的描述。我们将用我们的现实价值代替它们。例如,

result = 1 + 1
assert_equal 2, result
Run Code Online (Sandbox Code Playgroud)

在这里,我们把它换成<expected>2,并<actual>result,以测试1 + 1 = 2,因为我们期望它。

我似乎无法弄清楚要用什么文字代替“ FILL_IN”

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

assert_equal full_title, FILL_IN
assert_equal full_title('help'), FILL_IN
Run Code Online (Sandbox Code Playgroud)

在这两行中,您都应替换FILL_IN为上一个参数的结果-在这种情况下full_title,和full_title('help')

因此,如果full_title给出“ Kim's Cool Rails网站”,则第一行应为:

assert_equal full_title, "Kim's Cool Rails Site"
Run Code Online (Sandbox Code Playgroud)

如果full_title('Help')给出“ Kim的Cool Rails网站|帮助”,则第二行应为:

assert_equal full_title('Help'), "Kim's Cool Rails Site | Help"
Run Code Online (Sandbox Code Playgroud)

** 更新 **

因此,您得到的错误基本上是:我们希望看到“ Ruby on Rails教程示例应用程序”,而改为说“ Kim's Cool Rails Site”。

在我给出的示例中,我仅以“ Kim's Cool Rails网站”为例,因为我不知道您网站的实际标题。您需要用网站的实际标题(即full_path返回的任何内容)替换“ Kim's Cool Rails网站” 。因此,从错误消息来看,第一行所需的确切代码将是:

assert_equal full_title, "Ruby on Rails Tutorial Sample App"
Run Code Online (Sandbox Code Playgroud)

您需要自己找出第二行所需的确切文本,但是基本上您只需要用期望full_title('Help')返回的内容替换“ Kim's Cool Rails Site |帮助” 即可。