首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails模型测试

Rails模型测试
EN

Stack Overflow用户
提问于 2013-02-03 04:09:49
回答 2查看 489关注 0票数 0

你好,我正在使用rspec来测试我的用户模型。我只是想知道我所做的是不是测试中的一种常见做法。为了测试错误消息,我做了如下操作

代码语言:javascript
复制
    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测试是通过的,因为用户名无效,所以这是不好的。我所做的是一个好主意吗?有没有更好的测试方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-03 04:22:19

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

代码语言:javascript
复制
    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

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

代码语言:javascript
复制
    it { should validate_presence_of(:email) }

有关更多示例,请参阅rspec文档:

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

票数 1
EN

Stack Overflow用户

发布于 2013-02-03 04:16:28

您应该查看shoulda gem,它有一套有用的测试断言,包括唯一性验证:

代码语言:javascript
复制
describe User do
  should validate_uniqueness_of(:email)
end

编辑:Here's a link to the docs as a great place to start

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14665991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档