2016-08-03 72 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'块中得到期望值声明的数量是没有限制的,测试只会通过所有的期望匹配。 (也就是说,我相信最好的做法是把它分成单独的测试。)

相关问题