NoMethodError:对于#<rspec :: examplegroups :: competitionscontroller :: create>的未定义方法`mock'

时间:2015-10-17 03:00:42

标签: ruby-on-rails ruby unit-testing ruby-on-rails-4 rspec

已经多次询问

Variants这个问题,但大多数问题涉及摩卡,我没有使用它。我是rails的新手,所以这看起来似乎微不足道,但我无法在我的spec文件中使用mock(对于名为竞争对手的控制器)。

<div class="panel panel-default"> 
   <div class="panel-body">A panel</div>
</div> 

我只是坚持使用模拟方法,所以我没有写太多其他内容。 我的spec_helper文件包含以下内容

List<Integer> arrayB = new LinkedList<Integer>(); //this is the array with values in it

List<LinkedList> p = new LinkedList<LinkedList>();// this is the array of arrays  

List<Integer> arrayA = new LinkedList<Integer>();// this is the range or the sub list of arrayB

public void function(int n)// suppose that n = 6 and arrayB have these value {1,2,3,1,1,1,1,2}
{
    int count = 0;

    for (int w : arrayB)
    {
        count = w + count;
        arrayA.add(w);
        if(count == n)
        {
            count = 0;
            p.add((LinkedList) arrayA);
            arrayA.clear();
        }
    }
}

我正在使用ruby版本2.2.1和rails 4.2.1

1 个答案:

答案 0 :(得分:8)

使用 double 代替 模拟 ,这可以解决您的问题:

before :each do
  @fake_c = double('Competition', :competition_id => 1, :competition_name => 'one', :competition_des => 'any')
end