У меня есть фабричный класс, который предоставляет кучу подобных методов с помощью автозагрузки. Для более длинного списка различных типов объектов он может делать такие вещи, как
Factory->objects();
Factory->object(23);
Factory->object(name => "foo");
Теперь я хочу написать тест для этого класса. Я начал с чего-то вроде этого:
use Test::More;
BEGIN { use_ok 'Factory' }
my $objects = Factory->objects;
# more tests following ...
Тест не пройден в строке с Factory->objects
, потому что он неявно проверяет, может ли Factory
выполнить objects()
. Я не смог найти документацию для этого. Но если я запускаю тот же вызов в сценарии без тестирования, он работает отлично.
Как это проверить?
Обновление: ARGH, я только что осознал, что проверил все это для класса модели Factory
в своем приложении Catalyst. Что ж, этот класс модели является адаптером для класса Factory
в моей внешней модели (которую я на самом деле намеревался протестировать). Работа идеально подходит для самой модели. Еще было бы полезно узнать, как протестировать метод из адаптированного класса. Вот как выглядит класс адаптера:
package MyCatalystApp::Model::Factory;
use Moose;
extends 'Catalyst::Model';
extends 'Catalyst::Model::Adaptor';
__PACKAGE__->config(class => 'MyModel::Factory');
MyModel::Factory
— это тот же класс, что и Factory
в исходном вопросе. Я пропустил разницу между Catalyst и моделью в исходном вопросе для упрощения.