Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 摩卡摩卡进行另一项测试_Ruby_Functional Testing_Ruby Mocha - Fatal编程技术网

Ruby 摩卡摩卡进行另一项测试

Ruby 摩卡摩卡进行另一项测试,ruby,functional-testing,ruby-mocha,Ruby,Functional Testing,Ruby Mocha,我一直在遵循指南,但遇到了一个我似乎无法解决的问题。对于WordsController的功能测试,我有以下代码: class WordsControllerTest < ActionController::TestCase test "should get learn" do get 'learn' assert_response :success end test "learn passes a random word&q

我一直在遵循指南,但遇到了一个我似乎无法解决的问题。对于WordsController的功能测试,我有以下代码:

class WordsControllerTest < ActionController::TestCase
  
  test "should get learn" do
    get 'learn'
    assert_response :success
  end

  test "learn passes a random word" do    
    some_word = Word.new
    Word.expects(:random).returns(some_word)
    get 'learn'
    assert_equal some_word, assigns('word')
  end
end
class Word < ActiveRecord::Base
  def self.random
    all = Word.find :all
    all[rand(all.size)]
  end
end
我尝试过改变测试的顺序以及其他许多事情,但是我一次又一次地收到相同的测试失败-已经调用了Word.random()

我正在运行Rails 3.0 beta 4和Mocha 0.9.8。我一直在苦苦寻找解决我问题的办法,但似乎找不到。我是Ruby/Rails新手,因此对Ruby/Rails语言和框架相当不熟悉


提前谢谢

您需要什么样的摩卡咖啡?你在用bundler吗?听起来有点像没有调用mocha拆卸挂钩?

我也有同样的问题,模拟功能不是孤立于测试的,似乎是mocha的加载顺序有问题

我在让摩卡咖啡与Rails3合作时遇到了一些问题。我找到了一些关于stackoverflow的帖子,但直到在agoragames.com上找到一篇帖子,我才偶然发现了这个解决方案

基本上,在项目的GEM文件中,对摩卡咖啡的需求应该如下所示:

gem 'mocha', :require => false
然后在
test/test\u helper.rb
中,为摩卡添加一个require行:

...
...
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require 'mocha'

class ActiveSupport::TestCase
...
...

我认为Gemfile中摩卡的require行意味着您需要已经将摩卡安装为gem,bundler不会为您处理它。

摩卡需要最后加载。我也为这个问题挣扎了很多

#Gemfile
  group :test
    gem 'mocha', '~>0.9.8', :require => false
    ...
  end


此外,似乎摩卡迪尔敦没有被rails31调用。已设置的模拟永远不会被删除。。。(这一额外的攻击修复了它)


这些解决方案本身并不适用于我,它们使用了Ruby 2.2.2、Rails 4.2.2、mocha 1.1.0、shoulda context 1.2.1、factory_girl_Rails 4.5.0和其他一些与测试相关的gems

它做了什么呢?移动了我的
test\u helper.rb底部的这两行:

require 'mocha/setup'
require 'mocha/test_unit'

我还删除了
要求的“测试/单元”
。看来,
mocha/test\u unit
已经为我做了这件事。

在测试之间是否应该调用拆卸?如果
mocha
已正确加载,它将对测试框架进行猴子补丁,以调用
Mocha::API#Mocha_verify
Mocha::API#Mocha_teardown
,即不需要显式调用它们。我询问如何要求
Mocha
的原因是为了确定加载的顺序是否正确,以便猴子补丁能够正常工作。如果在运行测试时将
Mocha\u OPTIONS=debug
设置为环境变量,您将看到哪些测试框架正在被成功地修补。如果您仍然对此有问题,请告诉我调试输出是什么,并告诉我您使用的是什么版本的Mocha。谢谢,这正是我需要的。几个小时来我一直在用这个把头发扯得乱七八糟!谢谢!:)+1、迁移到bundler后,我将收到一份混乱的摩卡装单,我使用Sinatra,我应该将其包括在哪里?spec_helper.rb?但我仍然有这个问题。作为一个来自Java/Python的Ruby/Rails新手,我在最后一个小时里一直在为这个问题而挣扎——我不得不调试了一段时间,直到我了解到只有在调用模拟中的某个东西时才调用mocha的test verify(因为从最后开始的自动调用需要后期绑定),谢谢,谢谢!
test_helper.rb
  ....
  #at the very bottom
  require 'mocha'
  class ActiveSupport::TestCase
    def teardown
      super
      Mocha::Mockery.instance.teardown
      Mocha::Mockery.reset_instance    
    end
  end
require 'mocha/setup'
require 'mocha/test_unit'