为Dancer2配置Test :: DBIx :: Class :: Schema到应用程序

时间:2016-11-17 09:47:27

标签: perl dbix-class dancer

我正在尝试使用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" 

请帮助我理解这一点。

1 个答案:

答案 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,如大概中所示!

     

这个模块会警告一段时间,直到我们真正删除它。这是   提供足够的时间将其从系统中完全删除。

我建议你遵循这个建议。