2014-02-06 85 views
0

以前工作的基本數據庫方法(如「保存」)不再有效,我找不到解決原因的現有問題。Rspec - 無法識別保存功能

運行bundle exec rails spec /拋出對nil的未定義保存:許多位置的Nilclass錯誤。

C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.13.1/lib/rspec/core/example_group.rb:242:在「module_eval ' c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.13.1/lib/rspec/core/example_group.rb:242:'子類' c: /RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.13.1/lib/rspec/core/example_group.rb:228:in'describe ...依此類推...

難道由於寶石版本不匹配?

我使用postgresql的測試和開發數據庫是最新的並完全遷移。

我確信有

config.include Capybara::DSL 

在我spec_helper.rb文件。

user_spec.rb 
. 
. 
. 
describe "with mixed case" do 
     let(:mixed_case_email) { "[email protected]" } 
     before { @user.email = mixed_case_email } 

     describe "should be saved as all lower-case" do 
      @user.save 
      expect(@user.email).to eq mixed_case_email.downcase    
     end  

     describe "and that's already taken" do 
       before { user_with_same_email = @user.dup 
          user_with_same_email.email 
          user_with_same_email.save } 
       describe "should be invalid" do      
        it { should_not be_valid } 
       end 
     end    
. 
. 
. 
+1

你不能只是把隨機代碼放在你的Rspec代碼的中間。你需要把'user_with_same_email.email; userr_with_same_email.save'在測試的上下文中。 – sevenseacat

+0

我將代碼更改爲上面的代碼。 nil:NilClass的保存未定義方法仍然存在。 – ahnbizcad

回答

0

「保存」方法與Rspec正常工作。它還有其他一些問題。

 
    describe 'Anything goes here ...' do 
    before do 
     @p = Project.create(:name => 'logtasks') 
     @p.save 
    end 
    it { expect(@p.name).to eq 'logtasks' } 
    end