Ruby on rails测试自定义消息

时间:2015-05-30 18:44:08

标签: ruby-on-rails ruby tdd

我写了这个测试:

  test "email validation should accept valid address" do
    valid_addresses = %w[user@eee.com R_RDD@adf.com user@gmail.com hi12@hi.co a]
    valid_addresses.each do |e|
      @chef.email = e
      assert @chef.valid?, '#{e.inspect} should be valid'
    end
  end

当我进行rake测试时,失败的消息是

1) Failure:
ChefTest#test_email_validation_should_accept_valid_address [/home/ubuntu/workspace/test/models/chef_test.rb:56]:
#{e.inspect} should be valid

20 runs, 23 assertions, 1 failures, 0 errors, 0 skips

而不是| e |应该... 我希望看到像" a"应该是一个有效的更像描述性的消息来查看变量和检查方法值。 请帮助。

1 个答案:

答案 0 :(得分:1)

您需要使用字符串插值。哪个可以使用"",而不是''

assert @chef.valid?, "'#{e.inspect}' should be valid"

您不需要e.inspect,只有e就足够了。像:

assert @chef.valid?, "'#{e}' should be valid"

还有一个建议是,您可以使用包含所有错误的类ActiveModel::Errors的实例:

assert @chef.valid?, @chef.errors[:email]