Ruby on Rails教程,5.3.4练习,我如何使用assert_equal方法

时间:2017-10-28 20:18:26

标签: ruby-on-rails ruby methods

在练习中,将为full_title助手编写测试,并且必须填写代码。这是测试

require 'test_helper'

class ApplicationHelperTest < ActionView::TestCase
  test "full title helper" do
    assert_equal full_title,         FILL_IN
    assert_equal full_title("Help"), FILL_IN
  end
end

assert_equal方法如何在这里工作?我对于我应该投入的预期和实际内容感到困惑。

3 个答案:

答案 0 :(得分:0)

expected是表示正确行为的值,actual是实际返回的内容。如果您正在测试full_title,那么它应该是actual参数,并且您应该使用expected参数的输出。

答案 1 :(得分:0)

您想使用以下格式测试断言:

assert_equal( expected, actual, [msg] )

所以你要测试预期值&#34; full_title&#34;在这种情况下将等于实际值。最后一部分[msg]是一个可选的消息参数,您可以包含该参数,以便在测试失败时澄清您的反馈。 FILL_IN部分是您插入实际值的位置。因此,如果full_title的值为"Welcome To My Site",您可以通过编写如下的断言来测试该值:

assert_equal full_title, "Welcome To My Site"

如果full_title("Help")的值应为"Welcome To My Site | Help" 然后你会像这样测试它:

assert_equal full_title, "Welcome To My Site | Help"

如果您可以包含可选的消息参数,那么可以使您的失败消息更加清晰:

assert_equal full_title, "Welcome To My Site | Help", "This was not the correct title"

如果您的测试失败,该消息将显示为您的日志的一部分。

有一个Rails指南,详细介绍了如何使用断言:http://guides.rubyonrails.org/testing.html

答案 2 :(得分:0)

我也在阅读本教程,并注意到与MisterCal的答案在如何编写测试方面略有不同。

assert_equal( expected, actual, [msg] ) 是正确的格式,但是他的示例使用的是full_title方法调用,这是您得到的实际结果。

该字符串下面是期望的值,而辅助方法调用是您在调用它时获得的实际值。不要忘记使用参数调用该方法,否则将触发您先前设置的默认参数

assert_equal "Welcome To My Site | Help", full_title("Help"), "This was not the correct title"