未初始化的常量 Rspec
uninitialized constant Rspec
我创建了一个新的 rails 应用程序并按照此处 rspec-rails 的安装说明进行操作 - https://github.com/rspec/rspec-rails 然后我创建了(从互联网复制)以下内容我的 app/lib 目录中的模块。
require 'openssl'
require 'base64'
module Cipher
def self.encrypt(key, data)
data += 'A' # Add 'A' suffix to support empty data
cipher(:encrypt, key, data)
end
def self.decrypt(key, text)
data = cipher(:decrypt, key, text)
data[0...-1] # Remove the 'A' suffix
end
def self.encrypt_base64(key, data)
blowfish_string = self.encrypt(key, data)
Base64.encode64(blowfish_string)
end
def self.decrypt_base64(key, base64_string)
blowfish_string = Base64.decode64(base64_string)
self.decrypt(key, blowfish_string)
end
private
def self.cipher(mode, key, data)
cipher = OpenSSL::Cipher::Cipher.new('bf-cbc').send(mode)
cipher.key = Digest::SHA256.digest(key)
cipher.update(data) << cipher.final
end
end
然后我创建了以下规范文件。
require 'rails_helper'
Rspec.describe Ciper do
describe "cipher encrypts data" do
let(:key) { 'secret key' }
it "encrypts a string" do
original = ''
encrypted = Cipher.encrypt(key, original)
decrypted = Cipher.decrypt(key, encrypted)
expect(decrypted).to equal original
end
end
end
当我尝试 运行 规范时,出现以下错误
/Users/user/RubymineProjects/skeleton/spec/lib/cipher_spec.rb:3:in `<top (required)>': uninitialized constant Rspec (NameError)
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1226:in `load'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1226:in `block in load_spec_files'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1224:in `each'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1224:in `load_spec_files'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:97:in `setup'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:85:in `run'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:70:in `run'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:38:in `invoke'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/exe/rspec:4:in `<top (required)>'
from /Users/user/.rvm/gems/ruby-2.2.0/bin/rspec:23:in `load'
from /Users/user/.rvm/gems/ruby-2.2.0/bin/rspec:23:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
Process finished with exit code 1
Empty test suite.
我不确定自己做错了什么。任何人都可以提供一些关于我可以尝试什么的见解吗?谢谢!
来自错误:
uninitialized constant Rspec (NameError)
在您的 Cipher 规范中,您将 RSpec
拼错为 Rspec
。 Ruby 标识符区分大小写,而您尚未定义 Rspec
,因此出现错误。
我收到这个错误是因为 rubymine 试图 运行 "tests" 而不是 "rspecs"。当我将 运行 配置更改为 运行 和 RSpec 而不是测试时,一切正常。
我在 运行 RSpec 时收到 uninitiated constant
错误,因为我有一些没有相应控制器或模型的孤立测试。 controllers\models 在某个地方被删除了,但他们的测试仍然存在。再次正确删除了孤立的测试和 RSpec 运行。
我创建了一个新的 rails 应用程序并按照此处 rspec-rails 的安装说明进行操作 - https://github.com/rspec/rspec-rails 然后我创建了(从互联网复制)以下内容我的 app/lib 目录中的模块。
require 'openssl'
require 'base64'
module Cipher
def self.encrypt(key, data)
data += 'A' # Add 'A' suffix to support empty data
cipher(:encrypt, key, data)
end
def self.decrypt(key, text)
data = cipher(:decrypt, key, text)
data[0...-1] # Remove the 'A' suffix
end
def self.encrypt_base64(key, data)
blowfish_string = self.encrypt(key, data)
Base64.encode64(blowfish_string)
end
def self.decrypt_base64(key, base64_string)
blowfish_string = Base64.decode64(base64_string)
self.decrypt(key, blowfish_string)
end
private
def self.cipher(mode, key, data)
cipher = OpenSSL::Cipher::Cipher.new('bf-cbc').send(mode)
cipher.key = Digest::SHA256.digest(key)
cipher.update(data) << cipher.final
end
end
然后我创建了以下规范文件。
require 'rails_helper'
Rspec.describe Ciper do
describe "cipher encrypts data" do
let(:key) { 'secret key' }
it "encrypts a string" do
original = ''
encrypted = Cipher.encrypt(key, original)
decrypted = Cipher.decrypt(key, encrypted)
expect(decrypted).to equal original
end
end
end
当我尝试 运行 规范时,出现以下错误
/Users/user/RubymineProjects/skeleton/spec/lib/cipher_spec.rb:3:in `<top (required)>': uninitialized constant Rspec (NameError)
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1226:in `load'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1226:in `block in load_spec_files'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1224:in `each'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1224:in `load_spec_files'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:97:in `setup'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:85:in `run'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:70:in `run'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:38:in `invoke'
from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/exe/rspec:4:in `<top (required)>'
from /Users/user/.rvm/gems/ruby-2.2.0/bin/rspec:23:in `load'
from /Users/user/.rvm/gems/ruby-2.2.0/bin/rspec:23:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
Process finished with exit code 1
Empty test suite.
我不确定自己做错了什么。任何人都可以提供一些关于我可以尝试什么的见解吗?谢谢!
来自错误:
uninitialized constant Rspec (NameError)
在您的 Cipher 规范中,您将 RSpec
拼错为 Rspec
。 Ruby 标识符区分大小写,而您尚未定义 Rspec
,因此出现错误。
我收到这个错误是因为 rubymine 试图 运行 "tests" 而不是 "rspecs"。当我将 运行 配置更改为 运行 和 RSpec 而不是测试时,一切正常。
我在 运行 RSpec 时收到 uninitiated constant
错误,因为我有一些没有相应控制器或模型的孤立测试。 controllers\models 在某个地方被删除了,但他们的测试仍然存在。再次正确删除了孤立的测试和 RSpec 运行。