使用资源路由,您可以执行诸如url_for(@apple)之类的操作来获取特定资源“显示”方法的url。然而,在测试中,使用Mocha模拟我的对象时,我在生成指向资源的适当路径时遇到了问题。
例如,考虑url_for如何路由的示例:
@apple.id # => 4
url_for(@apple) #=> domain.com/apples/4这相当于更详细的:
url_for(:controller => 'apples', :id => 4, :method => :show)为了测试我的视图,我使用Mocha来模拟我的对象。
Apple.stubs(:color => 'red') # returns a MochaExpectation, rather than an instance of Apple.所以在我的测试中:
assigns[:apple] = @apple = Apple.stubs(:color => 'red')
url_for(@apple) #=> raises undefined method `mocha_expectation_path'我怎样才能接近这一点?看起来要么是存根需要返回一个苹果< ActiveRecord::Base,要么是url_for需要了解如何处理mocha_expectation。
发布于 2010-12-02 18:56:48
您错误地使用了Mocha。
如果你想要一个传统mocha对象的实例:
@apple = stub('apple', :colour => 'red')如果你想在一个真实的对象上存根特定的方法:
@apple = Apple.new
@apple.stubs(:colour => 'red')https://stackoverflow.com/questions/4074023
复制相似问题