2016-08-03 111 views
0

如果我的方法populate()返回一個非空值(它的作用是返回一個大於0的整數),但遇到了正確寫入的麻煩,我正在測試。我有:測試一個方法是否返回一個非空值

describe House::Room do 
    describe '.populate' do 
    let(:info) { 
     $info = {"people"=> 
         {"name"=>"Jordan", 
         "last_name"=>"McClalister"}} 
       } 
    it 'should return an integer > 0' do 
     expect(House::Room.populate(info)).not_to eq(nil) 
    end 
    end 
end 
+0

這裏首先要刪除的是'$ info ='。不需要。你的期望與主題不符。所以寫下你正在測試的東西。這有助於可讀性。 –

+0

在Ruby中'$'表示*全局變量*,這通常意味着你做錯了什麼。這些幾乎總是一個糟糕的計劃,應儘可能避免。 – tadman

+0

@ArupRakshit,應該只是'info'? – Mike

回答

-1

你需要的讓利分配更改爲:

describe House::Room do 
    describe '.populate' do 
    let(:info) {"people"=> 
         {"name"=>"Jordan", 
         "last_name"=>"McClalister"} 
       } 
    it 'should return an integer > 0' do 
     expect(House::Room.populate(info)).not_to eq(nil) 
    end 
    end 
end 

這應該使你的代碼工作像您期望的。

但是,如果您想更具體一些,也可以使用其他匹配器,如'be_within',或者在相同的測試中寫入多個expect語句,比如'expect to be an integer','expect to be greater than 0'等等......你可以在'it'塊中得到期望值聲明的數量是沒有限制的,測試只會通過所有的期望匹配。 (也就是說,我相信最好的做法是把它分成單獨的測試。)

相關問題