簡體   English   中英

Rspec'無法加載此類文件'

[英]Rspec 'cannot load such file'

我正在使用Code School的Rspec課程進行測試,並已將ruby 2.2.1,rails 4.2.5.1和rspec 3.4.4安裝到我的Ubuntu系統中。 正如我輸入的第一個視頻描述

rspec --init

在我的項目文件夾中,它創建了一個spec文件夾,在其中我創建了一個名為lib的新目錄。 在那里我放置了兩個.rb文件:

touch spec/lib/zombie_spec.rb
touch spec/lib/zombie.rb

spec_helper.rb通常在spec文件夾中創建。 如果我跑:

rspec spec/lib/zombie_spec.rb

對於zombie_spec.rb中的以下代碼:

require "spec_helper"
describe "Zombie" do
    it "is named Ash"
end

一切都按預期運行並顯示在視頻中。 但如果我采取下一步並添加

require "zombie"

在第一次需要之后到zombie_spec.rb文件,我收到錯誤:

cannot load such file -- zombie (LoadError)

zombie.rb看起來完全像這樣:

class Zombie
end

通常,您不希望zombie.rb位於spec文件夾中,因為它不是測試文件,但我不熟悉Code School教程。 RSpec對文件路徑做了一些魔術,所以它可能在錯誤的位置查找。

您可以嘗試require_relative "./zombie"或將zombie.rb移動到spec文件之外並require "<path_to_zombie>/zombie"

zombie.rb應該位於{project_home}/lib/如@kclowes所指出的那樣。

在你的情況下,因為它存在於同一個文件夾中(不推薦),你應該使用以下格式: require './zombie' require 'zombie'而不require 'zombie'因為后者用於標准和/或第三方庫。

這個問題已經有幾個月了,但我正在回答,以防萬一有人偶然發現這個問題。

除了kclowes之外,您還可以在rails配置中的自動加載路徑中添加目錄,以便在加載Rails時自動require d。

要做到這一點,只需添加

config.autoload_paths << "#{config.root}/spec/lib"

to config/test.rb

如果您只想在一個其他文件中要求一個文件,這是另一種可能性:

require "#{::Rails.root}/spec/support/models/shared_examples/<my_file>"

(Rails 6.0.x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM