在Rails中使用any_instance方法有什么用处

bra*_*boy 5 ruby-on-rails

我在rails中的一个测试文件中看到以下行.它有一个名为as的方法any_instance.有什么用?有人可以解释一下

http = Net::HTTP.new(Person.site.host, Person.site.port)
ActiveResource::Connection.any_instance.expects(:http).returns(http)
http.expects(:request).returns(ActiveResource::Response.new(""))
Run Code Online (Sandbox Code Playgroud)

谢谢

Dan*_*uis 8

any_instance是一种摩卡方法.从doc页面:

返回一个模拟对象,该对象将检测对此类的任何实例的调用.

Product.any_instance.stubs(:save).returns(false)
product_1 = Product.new
assert_equal false, product_1.save
product_2 = Product.new
assert_equal false, product_2.save
Run Code Online (Sandbox Code Playgroud)

  • Mocha 是一个存根和模拟框架,用于单元测试中以受控方式模拟与对象的交互。对于您的代码,在单元测试期间访问的任何“ActiveResource::Connection”对象对“ActiveResource::Connection#http”的调用将返回在第一行中创建的“http”对象。 (2认同)