2015-02-12 18 views
14

Ich erstellte eine neue Rails-Anwendung und befolgte die Installationsanweisungen für rspec-rails hier - https://github.com/rspec/rspec-rails Ich erstellte dann (kopiert von den Interwebs) das folgende Modul in meinem app/lib-Verzeichnis.nicht initialisierte Konstante Rspec

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 

Dann habe ich die folgende Spezifikationsdatei erstellt.

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 

Wenn ich versuche, die spec ich folgende Fehlermeldung

/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. 

Ich bin nicht sicher bekommen zu laufen, was ich hier falsch zu tun. Kann mir jemand einen Einblick geben, was ich ausprobieren kann? Vielen Dank!

Antwort

36

Aus dem Fehler:

uninitialized constant Rspec (NameError) 

In Ihrem Cipher Spec haben Sie RSpec als Rspec falsch geschrieben. Bei Ruby-IDs wird die Groß-/Kleinschreibung beachtet. Sie haben nicht definiert, daher der Fehler.

+3

Oh mein Gott, ich kann nicht glauben, dass ich das verpasst habe. Vielen Dank! –

+0

@geoffswartz - es ist ok ... habe gerade * GENAU * dasselbe gemacht;) – Nick

Verwandte Themen