2014-09-29 90 views
1

我的代碼布爾型,在我的文件規範我dont't瞭解紅寶石

describe TestChamber::Account_v1 do 
    let(:agree) { nil } 
    let(:agree) { nil } 

    let(:account) do 
    TestChamber::Account_v1.new(
     :agree => agree, 
     :agree1 => agree 
    ) 
    end 

    context "when tested account v1" do 
    let(:agree) {true} 
    let(:agree1) {false} 
    it "test account" do 
     account.create_account 
    end 
    end 

我的lib文件,我得到那麼雙參數使他們在終端

def initialize(options={}) 
     @agree = options[:@agree] 
     @agree1 = options[:@agree1] 
    end 
    def create_account 
      if (@agree == true) 
      puts "abc" 
      end 
     if (@agree1 != false) 
     puts "abc1" 
     end 
    end 

我的輸出

abc1 

任何人都可以爲我解釋這段代碼?

+5

是什麼'@ agree',在那裏它從何而來,它如何與':agree'和':agree1'? – Stefan 2014-09-29 11:55:49

+0

@Stefan希望我可以不止一次地提出你的評論:P – mcfinnigan 2014-09-29 11:58:09

+0

你已經定義了'let(:agree){true}'並且它應該可以用'agree'來訪問 - 在你的規範中不是lib內部的代碼。你能準確地發佈你的規範失敗的部分嗎? – Surya 2014-09-29 12:04:33

回答

2

你設置:

@agree = options[:@agree] 
@agree1 = options[:@agree1] 

與更換此:

@agree = options[:agree] 
@agree1 = options[:agree1] 

應該可以解決分配問題。

Futhermore,在你spec文件有:

let(:agree) { nil } 
let(:agree) { nil } 

第二個也許應該agree1。進一步回落:

TestChamber::Account_v1.new(
    :agree => agree, 
    :agree1 => agree 
) 

同樣,這應該是:agree1 => agree1

+1

我已經設置let(:agree){true} – beginerdeveloper 2014-09-29 12:07:29

+0

另一個'let(:agree){true}'和'let(:agree1){false}'在'context'內優先考慮'@agree '應該是真的,'@ agree1'應該是假的。他的代碼中發生了其他事情。 – Surya 2014-09-29 12:08:57

+1

我replced但我得到輸出abc abc1 agree1是真實的,但我已被設置它是假的 – beginerdeveloper 2014-09-29 12:14:48