Я новичок в использовании mixins, и я более знаком с внедрением зависимостей на основе Java.
Допустим, я использую модуль mixin для обеспечения подключения к базе данных для класса, как описано в http://fabiokung.com/2010/05/06/ruby-and-dependency-injection-in-a-dynamic-world/:
module ConnectionProvider
def connection
# open a database connection and return it
end
end
# reopening the class to mix the module in
class Repository
include ConnectionProvider
end
Это позволяет мне сделать это:
class Repository
def find(id)
connection.execute("SELECT ...")
end
end
Теперь мне не нужно передавать объект ConnectionProvider через инициализатор репозитория.
* 1012Допустим, я хочу использовать фиктивную версию ConnectionProvider для целей тестирования, и поэтому я хочу включить MockConnectionProvider в репозиторий вместо ConnectionProvider.И ConnectionProvider, и MockConnectionProvider предоставляют метод
соединение .Вот как я думаю, это должно быть сделано.
Для моего обычного приложения на Rails
В environment.rb:
require File.dirname(__FILE__) + "/../lib/repository"
Для моих тестовых сценариев
В моих тестовых файлах:
require File.dirname(__FILE__) + "/../lib/repository_mocked"
Это правильно?Если нет, то может ли кто-нибудь предоставить ссылку на статью, демонстрирующую правильный путь?