【问题标题】:Integrate Codeception to use in laravel集成 Codeception 以在 laravel 中使用
【发布时间】:2017-09-17 11:36:21
【问题描述】:

有没有什么方法可以将 codeception 集成到 laravel 中,我可以在我的控制器中使用它?

例如,假设我有一条路线Route::post('/plugins/test', PluginController@test_plugins)

在我的 PluginController 类中,我想测试我的应用程序是否正常工作。就我而言,我想在更新插件后检查这一点,方法是在代码接收中使用相同的语义进行验收测试,例如:

public function test_plugins(){
 $I = new AcceptanceTester($scenario);
 $I->wantTo('check that ... ');
 $I->amOnPage('/plugins');
 $I->seeInDatabase( ... );
 ....

 return "site works (not) correctly";
}

我正在使用 Laravel 4.2

干杯 雅各布

【问题讨论】:

  • 你在这方面有什么进展吗?

标签: laravel phpunit automated-tests codeception acceptance-testing


【解决方案1】:

我认为您正在尝试以错误的方式进行操作。控制器永远不应该测试任何东西。控制器是一个只知道调用路由时要做什么的东西。这意味着您可能希望从控制器调用控制台命令,该命令将运行您的测试,但不在控制器本身中编写测试代码。

所以实现你想要做的步骤是:

  1. 照常在您的测试文件夹中创建测试套件
  2. 创建控制器
  3. 调用 ./vendor/bin/codecept 运行单元 YourTestCest

【讨论】:

  • 谢谢,这实际上是可能的!但是,如果我希望我的应用程序的任何用户都能够创建自定义测试呢?我不能设置预定义的测试,对吧?
  • 我认为允许用户自己创建测试的情况非常罕见,因为他们可以在那里编写一些破坏性的代码,这会破坏一切。仅当您的用户在某种孤立的游乐场中工作时才可以,该游乐场在运行测试之前创建并在测试完成后销毁。
  • 在这种情况下,您仍然可以只允许用户通过 API 运行控制台命令,这将生成空的测试套件。然后让他们像我之前描述的那样编辑和运行这个套件。您正在尝试制作嵌合体,因为您的测试用例正在使用您的应用程序,但您希望您的应用程序使用正在使用您的应用程序的测试:)
  • 可能有点被误解了。我想在我的 laravel 控制器中使用 codeception 的语法来为我的应用程序的用户提供创建自定义测试用例。例如:应用程序维护多个 wordpress 站点。假设用户通过仪表板更新插件。之后,他想知道该站点是否仍在运行。因此,用户应该能够为他的 wordpress 网站创建自定义测试。 $I->amOnPage('/shop'); $I->see(...) ... 参数应该从数据库加载。在最终结果中,用户应该能够通过拖放来构建测试。
  • 我建议您使用symfony.com/doc/current/components/browser_kit.html 并在浏览器套件客户端之上构建一个优雅的。你想要实现的东西不是代码接收的情况。但我不确定,只是一个意见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 2016-07-21
  • 1970-01-01
  • 2014-09-14
相关资源
最近更新 更多