【问题标题】:How to test kohana model, controller如何测试 kohana 模型、控制器
【发布时间】:2012-01-11 01:43:44
【问题描述】:

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

下个月我必须开发一个非常大的项目。我是 cakephp 的忠实粉丝,但我意识到 cakephp 不能满足我的项目要求。我学得很快。在阅读了 Kohana 官网的文档后,我将在这个项目中使用 Kohana。

在Kohana上做了一些搜索后,我还有一些话题要关注

  1. 测试模块缺少文档。我不清楚如何测试模型、控制器、功能测试。谁能提供我的想法、教程、示例、资源?
  2. 应用环境不太清楚。对不起,因为我是 ruby​​onrails 的漂亮家庭。我觉得 Rails 中的环境对我来说更有意义。我可以在特定环境中拥有一颗宝石。例如,我有 rspec gem(用于自动化测试)仅用于测试环境,我有 unicorn gem 仅用于生产。对于那些不熟悉 ruby​​ 的人来说,gem 类似于 kohana 中的“模块”。谁能告诉我如何告诉 kohana 只在测试环境中加载“unittest”?因为我不想在生产环境中加载单元测试。
  3. 在 Rails 中有一种应用程序控制台模式,称为 rails 控制台。使用 rails 控制台,我们可以通过控制台模式与模型进行交互。 Kohana有没有类似的东西?

【问题讨论】:

标签: tdd phpunit kohana kohana-3


【解决方案1】:

我只能回答你的两个问题,总比没有好;)

AD2。您可以根据 .htaccess(setenvgetenv)/$_SERVER 设置设置 Kohana::$environment 变量:

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。抱歉,我太简洁了——不,没有。

【讨论】:

  • 我已将虚拟主机配置为使用完全限定域名。例如 www.niph.com.kh。我可能还想在生产模式下运行 localhost。所以我认为通过检查服务器名称名称对我来说不是一个好方法。您还有其他方法吗?
  • 然后你可以使用 setenv 和 getenv - stackoverflow.com/questions/2008123/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
相关资源
最近更新 更多