【发布时间】:2012-01-03 19:28:00
【问题描述】:
我有一个工厂类,它通过使用自动加载提供了一堆类似的方法。对于不同对象类型的更长列表,它可以执行以下操作
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,我刚刚意识到我将所有这些都放在了我的 Catalyst 应用程序中的 Factory 模型类的测试中。好吧,这个模型类是我的外部模型(我实际上打算测试)中Factory 类的一个适配器。这项工作非常适合模型本身。仍然希望知道如何从改编的课程中测试方法。这是适配器类的样子:
package MyCatalystApp::Model::Factory;
use Moose;
extends 'Catalyst::Model';
extends 'Catalyst::Model::Adaptor';
__PACKAGE__->config(class => 'MyModel::Factory');
MyModel::Factory 与原始问题中的Factory 是同一类。为了简化,我跳过了 Catalyst 和原始问题中的模型之间的区别。
【问题讨论】:
标签: perl testing autoload catalyst