Tag: 摩卡

有没有办法撤消any_instance的Mocha存根?

在我的控制器规格中,我的存根有效吗? 对于一些路由测试,(基于Ryan Bates nifty_scaffold)如下: – it “create action should render new template when model is invalid” do Company.any_instance.stubs(:valid?).returns(false) post :create response.should render_template(:new) end 当我单独测试控制器时,这很好。 我的模型规格中也有以下内容 it “is valid with valid attributes” do @company.should be_valid end 再次,这在隔离测试时工作正常。 如果我为模型和控制器运行规范,问题就来了。 模型测试总是失败为有效? 方法已被删除。 当控制器测试被拆除时,有没有办法删除any_instance的存根。 我通过以反向字母顺序运行测试来解决问题,以确保模型测试在控制器之前运行,但我真的不喜欢我的测试依赖于序列。

如何添加一个调用辅助方法的mocha期望?

我正在将一个方法从一个控制器转移到一个帮手; 现在将从视图中调用该方法。 以前,在我的控制器中,我有 def show @things = gather_things end 在我的function测试中,我有 test “show assigns things” do get :show assert_equal GATHERED_THINGS, assigns(:things) end 现在, gather_things生活在帮助器中并从视图中调用。 我有一个帮助器的unit testing,它确保它返回正确的值,但我希望我的function测试断言它被调用。 我试过了 test “show calls gather_things” do @controller.expects(:gather_things) get :show end 但这不起作用。 我应该打电话给什么expects(:gather_things) ?

Mocha:具有特定参数的存根方法,但不包含其他参数

我想在给定特定参数值时使用Mocha存根方法,并在给出任何其他值时调用原始方法。 当我这样做时: MyClass.any_instance.stubs(:show?).with(:wanne_show).returns(true) 我得到了 unexpected invocation for MyClass.show?(:other_value) 我也知道,在没有’with’调用的情况下编写模拟时我可以存根所有参数,然后给出我特定的模拟。 但是我必须知道每次通话的返回值,但事实并非如此:/ tldr; 有没有办法在存根中调用原始方法或只存储特定参数并留下其他参数?

摩卡和嵌套对象

如果这是一个愚蠢的问题,我很嘲笑。 我可以用mocha做以下事情: person.expects(:first_name).returns(‘David’) 如何模拟嵌套对象? 假设我有一个属于一个人的产品,我想得到那个人的名字。 在我的应用程序中,我可能会这样做: product.person.first_name 如何使用模拟获得相同的结果?

有没有办法在Test :: Unit中撤消任何实例的Mocha存根

就像这个问题一样 ,我也在使用Ryan Bates的nifty_scaffold。 它具有使用Mocha的any_instance方法强制在隐藏在控制器后面的模型对象中的“无效”状态的理想方面。 与我链接的问题不同,我没有使用RSpec,而是使用Test :: Unit。 这意味着这两个以RSpec为中心的解决方案对我不起作用。 是否有一般(即:使用Test :: Unit)方法来删除any_instance存根? 我相信它在我的测试中导致了一个错误,我想validation一下。

Ruby Mocha:有没有相当于rspec-mocks’#and_call_original?

Rspec-mocks expect(some_object).to receive(:some_method).and_call_original 。 我可以用摩卡这样做,如果是这样,怎么样? some_object.expects(:some_method)…. …什么?

Mocha Mock进行另一项测试

我一直在遵循15个TDD步骤来创建Rails应用程序指南 – 但是遇到了一个我似乎无法解决的问题。 对于WordsController的function测试,我有以下代码: 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 在Word类中,我有以下代码: class Word < ActiveRecord::Base def self.random all = Word.find :all all[rand(all.size)] end end 当我运行测试时,我遇到以下错误(为简洁起见缩短): 1) Failure: unexpected invocation: […]