如何编写有效的测试来同时利用RSpec和ActiveRecord for Rails?

2026-04-11 18:092阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计441个文字,预计阅读时间需要2分钟。

如何编写有效的测试来同时利用RSpec和ActiveRecord for Rails?

我已经构建了一个简单的Rails应用程序,其中包含三个从ActiveRecord继承的类。在测试驱动开发方面,我已迈出第一步,因为我已经编写了需要测试的类。目前,我的测试都进行得很顺利。

我已经构建了一个简单的rails应用程序,其中包含三个从目前为止从ActiveRecord继承的类.我在测试驱动开发方面领先一步,因为我已经编写了我需要测试的类.到目前为止,我写的测试都很顺利.正在创建对象,属性正在响应,验证都已到位.

当我调用“!”时问题就开始了.在我的创建方法上,因为现在对象一直传递到数据库.而不是我的正常验证拦截无效输入,似乎数据库有机会响应刺激.

如何编写有效的测试来同时利用RSpec和ActiveRecord for Rails?

到目前为止,我在运行测试时收到的错误是:

ActiveRecord的:: RecordInvalid:
验证失败:商店太长(最多11个字符)

我很高兴我收到了这个错误,但想知道如何在我的测试中更好地规划它.生成上述错误的代码是:

it "should not a accept a department with a shopify shop_id that's over 11 chars" do long_id = "9" * 12 long_id_department = Department.create!(@attr.merge(:id => [long_id, ""])) long_id_department.should_not be_valid end

我假设这一行特别应该采用其他形式:long_id_department.should_not be_valid

希望大家能够了解那种形式应该是什么.

shoulda宝石使您的验证测试成为一块蛋糕.最新的shoulda版本是作为RSpec的附加组件构建的.

您正在尝试的特定验证类型的文档是here.

你最终会得到看起来像这样的测试代码.

describe Department do it { should ensure_length_of(:id).is_at_most(11) } end

本文共计441个文字,预计阅读时间需要2分钟。

如何编写有效的测试来同时利用RSpec和ActiveRecord for Rails?

我已经构建了一个简单的Rails应用程序,其中包含三个从ActiveRecord继承的类。在测试驱动开发方面,我已迈出第一步,因为我已经编写了需要测试的类。目前,我的测试都进行得很顺利。

我已经构建了一个简单的rails应用程序,其中包含三个从目前为止从ActiveRecord继承的类.我在测试驱动开发方面领先一步,因为我已经编写了我需要测试的类.到目前为止,我写的测试都很顺利.正在创建对象,属性正在响应,验证都已到位.

当我调用“!”时问题就开始了.在我的创建方法上,因为现在对象一直传递到数据库.而不是我的正常验证拦截无效输入,似乎数据库有机会响应刺激.

如何编写有效的测试来同时利用RSpec和ActiveRecord for Rails?

到目前为止,我在运行测试时收到的错误是:

ActiveRecord的:: RecordInvalid:
验证失败:商店太长(最多11个字符)

我很高兴我收到了这个错误,但想知道如何在我的测试中更好地规划它.生成上述错误的代码是:

it "should not a accept a department with a shopify shop_id that's over 11 chars" do long_id = "9" * 12 long_id_department = Department.create!(@attr.merge(:id => [long_id, ""])) long_id_department.should_not be_valid end

我假设这一行特别应该采用其他形式:long_id_department.should_not be_valid

希望大家能够了解那种形式应该是什么.

shoulda宝石使您的验证测试成为一块蛋糕.最新的shoulda版本是作为RSpec的附加组件构建的.

您正在尝试的特定验证类型的文档是here.

你最终会得到看起来像这样的测试代码.

describe Department do it { should ensure_length_of(:id).is_at_most(11) } end