我正在尝试使用Dancer2
对我的Test::DBIx::Class::Schema.
应用架构进行完整性测试
我创建了一个test.t
并放在我的主应用程序目录中(不在/t
文件夹中)。该文件如下所示:
#!/usr/bin/perl
use Test::More 'no_plan';
use Test::DBIx::Class::Schema;
use Dancer2::Test app => ['PearlBee'];
use lib 'lib';
use lib::PearlBee::Model::Schema;
use strict;
use warnings;
# the order is important
BEGIN {
use_ok 'Test::DBIx::Class::Schema';
#use_ok 'lib::PearlBee::Model::Schema';
use_ok 'Dancer2::Test', app => 'PearlBee';
use_ok 'lib::PearlBee::Model::Schema';# apps => ['PearlBee'];
#
#use_ok 'DBICx::TestDatabase';
}
#my $schema = DBICx::TestDatabase->new('lib::PearlBee::Model::Schema');
my $schematest = Test::DBIx::Class::Schema->new(
{
# required
dsn => 'dbi:mysql:PearlBee;host=localhost;', # or use schema option
namespace => 'lib::PearlBee::Model::Schema',
moniker => 'user',
# optional
username => 'root',
password => '1',
glue => 'Result',
#test_missing => 1,
}
);
$schematest->methods(
{
columns => [
qw[
id
salt
]
],
resultsets => [
qw[ User
]
],
}
);
$schematest->run_tests();
我崩溃了以下输出:
Can't locate object method "connect" via package "lib::PearlBee::Model::Schema"
请帮助我理解这一点。
答案 0 :(得分:2)
这些线看起来很有趣:
use lib 'lib';
use lib::PearlBee::Model::Schema;
第一个似乎没问题。我明白为什么你要把'lib'添加到@INC
。但是这样做了,我希望第二行是:
use PearlBee::Model::Schema;
您似乎不太可能在模块名称的前面需要lib::
。但也许你的目录结构比我假设的更复杂。 PearlBee架构模块在哪里?
更新:另请注意,最新版本的https://openpyxl.readthedocs.io/en/latest/print_settings.html说明了这一点:
已弃用。请改用Dancer2::Test documentation,如大概中所示!
这个模块会警告一段时间,直到我们真正删除它。这是 提供足够的时间将其从系统中完全删除。
我建议你遵循这个建议。