【问题标题】:Why are these rspec tests "pending"?为什么这些 rspec 测试“待定”?
【发布时间】:2016-02-15 23:55:35
【问题描述】:

我正在创建一个 Rails 应用程序并刚刚添加了一个文件 (app/spec/models/test_spec.rb ) 5 个新的 rspec 测试:

describe Topic do
   describe "scopes" do

     before do 
       @public_topic = Topic.create # default is public
       @private_topic = Topic.create(public: false)
     end

     describe "publicly_viewable" do
       it "returns a relation of all public topics" do
         expect(Topic.publicly_viewable).to eq( [@public_topic] )
       end
     end

     describe "privately_viewable" do
       it "returns a relation of all private topics" do
         expect(Topic.privately_viewable).to eq( [@private_topic] )
       end
     end

     describe "visible_to(user)" do
       it "returns all topics if the user is present" do
         user = User.new
         expect(Topic.visible_to(user)).to eq(Topic.all)
       end

       it "returns only public topics if user is nil" do
         expect(Topic.visible_to(nil)).to eq(Topic.publicly_viewable)
       end
     end
  end
end

当我在控制台中运行“rspec spec”时,我得到了以下输出:

在 8.38 秒内完成(文件加载耗时 1 分 40.84 秒) 18 个示例,1 个失败,5 个待处理

为什么这 5 个示例“待定”?

【问题讨论】:

  • rspec spec 命令应该告诉您哪些测试正在等待。你确定是这些吗?
  • 另外,对于它的价值,当我在处理一个特定的功能时,我喜欢只为那个部分运行单元测试。所以我会使用rspec 'spec/models/test_spec.rb' -fd,而不是rspec spec。然后,一旦我的单元测试通过,我就会进行全套测试、集成测试等。顺便说一句,-fd 会给你很好的输出格式。
  • 尝试将您的第一行更改为RSpec.describe Topic, type: :model do。目前,您没有告诉 RSpec 这是一个模型规范。
  • 另外,这是您的实际规格文件吗?你错过了require 'rails_helper'。而且,我认为你需要做before(:each) dobefore(:all) do 而不仅仅是before do。如果这不是整个文件,请发布整个文件。
  • @jvillian - 使用before do 时,它隐式使用before(:each) do(至少在我个人使用的每个版本的RSpec 中)。很好地抓住了失踪的require

标签: ruby-on-rails rspec


【解决方案1】:

Rspec 会自动在 spec/ 的其他子目录中为您创建规范。您正在整个 spec/ 目录上运行规范,其中包括自动生成的控制器规范、视图规范、路由规范等。这些都带有待处理的示例。如果您只想运行此文件中的规范,请运行 rspec spec/models/test_spec.rb

【讨论】:

  • 感谢您的回复!当我运行rspec spec/models/test_spec.rb 时,我得到以下输出:_/home/nitrous/code/project/spec/models/topic_spec.rb:1:in : uninitialized constant Topic (NameError) from /home/nitrous /code/project/.bundle/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1327:从/home/nitrous/code/bloccit/.bundle/gems/rspec-core加载-3.3.2/lib/rspec/core/configuration.rb:1327:in block in load_spec_files from /home/nitrous/code/bloccit/.bundle/gems/rspec-core-... _
  • 查看我对 OP 的评论。
猜你喜欢
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
相关资源
最近更新 更多