【问题标题】:Trying to run a rspec test file and it can't find it尝试运行 rspec 测试文件,但找不到它
【发布时间】:2017-08-20 16:38:11
【问题描述】:

我正在尝试学习 RSpec,因此从一个简单的计算器程序开始。

对如何让 rspec 找到文件感到困惑,因为它一直说无法加载它。

这是迄今为止的过程:

1 Calculator 类被编写并保存为calculator.rb 文件。创建lib 文件夹并将calculator.rb 文件移动到其中。

2 在初始目录(即 lib 文件夹之外)中,我 rspec --init 创建了 .rspec 文件和 rspec/spec_helper.rb 文件。

3 然后我创建写入calculator_spec.rb 文件并将其放在rspec 文件夹中。在calculator_spec.rb 文件的顶部,我有这个require 'calculator.rb'

4 我运行这个命令rspec calculator_spec.rb 得到这个'load': cannot load such file

如何解决这个问题,以便 rspec 命令可以找到该文件?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby rspec


    【解决方案1】:

    此命令将在spec/spec_helper.rb 的第一行:

    require File.join(File.dirname(__FILE__), '../lib/calculator.rb')
    

    【讨论】:

    • 好的,请原谅我的困惑,但需要这条线吗?我想用RSpec,你可以运行一个通用命令,所以所有测试都可以运行......否则我必须为每个文件都做那一行?
    • 另外我现在运行它,同时在 librspec 文件之外,再次遇到无法加载错误...
    • 默认情况下,rspec 不知道您的库代码库。 rspec spec_helper 文件通常会加载所需的入口点。对于将长期存在于 lib 中的代码库,按照惯例,该文件反过来需要库所需的任何其他文件或文件集。 Rspec 确实有它自己的关于测试的约定。一般来说,您编写的满足**/*_spec.rb 正则表达式的规范应该可以由rspec 运行,无论您编写了多少规范。
    • 好的,没有意识到rspec 不知道librspec 文件。我应该从这两个文件夹中取出所有文件并从父目录中运行它吗?
    • 哇哦。我刚刚取出了所有这些文件,然后运行了这个命令:rspec calculator_spec.rb --color,它成功了!但我认为“约定”是libspec 文件夹...
    【解决方案2】:

    不确定您使用的是哪个版本的 RSpec,但它应该创建一个 spec 目录,而不是默认的 .rspec 文件之外的 rspec

    @jim-van-fleet 的回答应该可以正常工作。但是,最佳做法是将您的代码目录镜像到spec 目录下。所以它应该看起来像这样:

    我还将以下内容添加到您的 calculator_spec.rb 文件的顶部

    require 'spec_helper'
    
    require File.expand_path('../../../lib/calculator', __FILE__)
    

    【讨论】:

      猜你喜欢
      • 2012-05-23
      • 2014-09-17
      • 2021-08-06
      • 2018-11-19
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      相关资源
      最近更新 更多