2010-09-21 4 views
5

Я вижу следующую строку в одном из тестовых файлов в рельсах. Он имеет метод, называемый any_instance. Каково его использование? Может кто-то пожалуйста, объяснитеЧто такое метод any_instance в Rails

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("")) 

Благодарности

ответ

7

any_instance является Mocha метод. На странице документа:

Возвращает макет объекта, который будет обнаруживать вызовы в любой экземпляр этого класса.

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 
+1

Я смущен на том, что это делает. Не могли бы вы объяснить ... – bragboy

+1

Mocha - это стробирующий и издевательский каркас, который используется в модульном тестировании для имитации взаимодействия с объектами контролируемым образом. В случае вашего кода вызов «ActiveResource :: Connection # http» для любого объекта «ActiveResource :: Connection», доступного во время модульного теста, вернет объект 'http', созданный в первой строке. –