繁体   English   中英

Rails模型测试

[英]Rails model testing

您好,我正在使用rspec来测试我的用户模型。 我只是想知道我在做什么是否是测试中的常规做法。 为了测试错误消息,我正在做这样的事情

    User.create!(users(:first))
    user.update_attributes  email: 'IDon\'tThinkThisIsAValidEmail' 
    user.should_not be_valid
    assert user.errors.messages.include? :email

另外,我将如何测试重复项? 调用full_messages并测试“电子邮件已被占用”消息? 这是一个好习惯吗? 我以这种方式进行测试,因为在我的should_not be_valid测试通过之前,因为用户名无效,所以这样做不好。 我在做一个好主意吗? 有更好的测试方法吗?

您应该检查出Shoulda gem ,它具有一系列有用的测试断言,包括用于唯一性验证的:

describe User do
  should validate_uniqueness_of(:email)
end

编辑: 这是到docs的链接,是开始的好地方

要验证电子邮件的格式,您可以执行以下操作。 请注意,您不必创建用户记录或使用夹具来编写大多数验证规范。

    it "will not allow invalid email addresses" do
      user = User.new(email: 'notAValidEmail')
      user.should have(1).error_on(:email)
    end

    it "will allow valid email addresses" do
      user = User.new(email: 'valid@email.com')
      user.should have(:no).errors_on(:email)
    end

要验证状态,您可以执行以下操作:

    it { should validate_presence_of(:email) }

您可以查看rspec文档以获取更多示例:

https://www.relishapp.com/rspec/rspec-rails/v/2-3/docs/model-specs/errors-on

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM