如何测试kohana模型,控制器

时间:2012-01-11 01:43:45

标签: tdd phpunit kohana kohana-3

我已经使用php超过5年了。最近我在rubyonrails工作过。我在这个非常好的框架中完成了一些项目。我最喜欢的rails和ruby:它们都促进了自动化测试,并且有很多丰富的库。与PhpUnit相比,Rspec和TestUnit非常容易学习。

我必须在下个月开发一个非常大的项目。我是cakephp的忠实粉丝,但我发现cakephp不符合我的项目要求。我是一个快速学习者。在阅读了Kohana官方网站的文档之后,我将使用Kohana进行这个项目。

在对Kohana进行了一些搜索之后,我仍然有一些关于

的话题
  1. 测试模块缺少doc。我不清楚如何测试模型,控制器,功能测试。任何人都可以提供我的想法,教程,示例,资源吗?
  2. 应用程序环境不太清楚。对不起,因为我是一个非常喜欢rubyonrails的家庭。我觉得轨道环境对我来说更有意义。我可以在特定环境中拥有一个宝石。例如我有测试环境的rspec gem(用于自动测试),我只有生产的独角兽宝石。对于那些刚接触红宝石的人来说,宝石类似于kohana中的“模块”。谁能告诉我如何告诉kohana只在测试环境中加载“unittest”?因为我不想在生产环境中加载unittest。
  3. 在Rails中有一个名为rails console的app控制台模式。使用rails控制台,我们可以通过控制台模式与模型交互。在Kohana有类似的东西吗?

1 个答案:

答案 0 :(得分:3)

我只能回答你的两个问题,但更好的是没有问题;)

<强> AD2 即可。您可以根据.htaccess(Kohana::$environmentsetenv)/ getenv设置设置$_SERVER变量:

if (Arr::get($_SERVER, 'SERVER_NAME') !== 'localhost')
{
    // We are live!
    Kohana::$environment = Kohana::PRODUCTION;

    // Turn off notices and strict errors
    error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT);
}
else
{
    Kohana::$environment = Kohana::DEVELOPMENT;
    error_reporting(E_ALL | E_STRICT);
}

然后您可以像这样设置Kohana::init

Kohana::init(array(
    'base_url' => '/',
    'caching' => Kohana::$environment === Kohana::PRODUCTION,
    'profile' => Kohana::$environment !== Kohana::PRODUCTION,
    'index_file' => FALSE,
    'errors' => TRUE
));

因此您的生产应用程序将启用缓存并禁用分析 对于模块来说,它几乎是一样的:

if (Kohana::$environment !== Kohana::PRODUCTION)
{
    Kohana::modules(array(
        'unittest' => MODPATH . 'unittest',
    ));
}

<强> AD3 即可。抱歉是简洁的 - 不,没有一个。