【问题标题】:What are the pre-requisties that I need to run rspec for rails? [closed]运行 rspec for rails 需要哪些先决条件? [关闭]
【发布时间】:2016-02-12 12:11:36
【问题描述】:

我的团队有 ruby​​ on rails 代码,现在我需要使用 rspec 对规范进行单元测试。我浏览了几个网站,但没有得到关于如何使用它的完美拍摄。谁能帮我完成使用 rspec 的步骤。以及如何在测试数据库中创建用户。请指导我,我是 rspec 的新手。

【问题讨论】:

  • 有关于如何使用 rspec 的书籍。对于这个网站来说,这个问题太宽泛了。还有一点——你应该先写你的测试,然后再写一段代码来满足它们。

标签: ruby-on-rails ruby unit-testing rspec rspec-rails


【解决方案1】:

rspec repo page on GitHub. 上的自述文件中可以获得有关设置 RSpec 的良好指南。

但是...就个人而言,以下是我最常用的组合:

  1. Database cleaner:顾名思义,用于清理数据库。 Avdi on his blog here 提供了一个很好的设置指南。

注意:此博客建议将数据库清理器的配置放在支持目录中的单独文件中。如果这样做了,请记住取消注释 rails_helper.rb 文件中的以下行

# Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }

这将确保测试套件中需要支持目录下的所有文件。

  1. FactoryGirls:这是用于生成测试记录(用户等),就像您在问题中提出的那样。 getting started document here. 上给出了足够好的指南
  2. Faker:我用它来生成Fake 随机值来构建我的记录。例如:测试用户的名字、姓氏、电子邮件、密码等,而不是硬编码这些值。使用它就像 repo 中的自述文件中所述的那样直接

有了以上内容,第一个 Rspec 规范就可以编写了。

Specs基本上可以分为两步:

  • 说明
  • 期望

描述是对诉讼的测试内容的总结,而期望是正常的预期结果。

描述也可以嵌套在其他描述中。

Rspec 测试的一个示例是:

require 'rails_helper'

describe TextMessage do
  describe "#failed?" do
    it "returns true" do
      text = FactoryGirl.create(:text_message, :not_delivered)
      expect(text.send(:failed?)).to be_truthy
    end
  end
end

首先,rails_helper 文件是必需的。这是所有测试配置所在的位置。此文件是在从其 repo 上的 Rspec 安装指南运行 rails generate rspec:install 命令时自动生成的。

接下来,我有一个描述块 describe TextMessage do;end 这是描述我的模型,在这种情况下是 TextMessage

接下来,我在第一个描述块中嵌套了另一个描述块,用于描述我的 TextMessage 模型中的方法(失败?):describe "#failed?" do;end

然后我有期望块,这是我的主要测试:

it "returns true" do
  text = FactoryGirl.create(:text_message, :not_delivered)
  expect(text.send(:failed?)).to be_truthy
end

failed? 方法的所有其他测试都将在此之下,以及它们各自的块...而模型中其他方法的其他测试将相应地在第一个之下。

希望我能够在这里为您解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多