【问题标题】:CakePHP integration tests - Is there something else to test?CakePHP 集成测试 - 还有什么要测试的吗?
【发布时间】:2017-04-08 23:54:27
【问题描述】:

我的代码中有这样的方法。

    public function businessDepartments()
{
    $this->paginate = [
        'conditions' => [
            'Tags.tag_type_id' => 'businessDepartment'
        ]
    ];
    parent::_index();

    $this->set('columns', [
        'tag_value' => ['title' => __d('cockpit', 'Business department')],
        'sort' => ['title' => __d('cockpit', 'Sorting')]
    ]);
    $this->_setURLsWhenAdd();
}

我可以使用类“Tags”和操作“businessDepartment”来调用此方法。 这就是 _setURLWhenAdd() 的样子。

    /**
 * this method is setting the URLs inside the add
 * @return setter
 */
protected function _setURLsWhenAdd()
{
    // Set a new Url for the Add-Button in the index-View
    $this->set('dataAjaxUrl', "/tags/add/businessDepartment");

    // Sets the refreshable-Class on the element and the ajax-url where the element can get fresh data
    $this->set('refreshable', '/tags/businessDepartments');
}

我有一个看起来像这样的测试。

public function testBusinessDepartments()
{
    $this->get('/tags/businessDepartments');
    $this->assertResponseOk();
}

这是我想要测试的吗?我可以/应该测试更多的东西吗?除了这个方法的入口和响应?

【问题讨论】:

    标签: php cakephp phpunit


    【解决方案1】:

    这是我想要测试的吗?我可以/应该测试更多的东西吗?除了这个方法的入口和响应?

    测试视图变量是否存在?

    我认为在测试中应该可以通过$this->_controller->viewVars 访问它们。如果不知道如何访问控制器实例。

    另一种测试页面外观和功能的方法(JS 方面)您也可以实施验收测试。请参阅http://codeception.com/docs/03-AcceptanceTests Cake3 也有一个 codeception 插件。

    另外你不应该使用字符串 urls /tags/businessDepartments 而应该使用 Router::url() 并使用数组语法。

    【讨论】:

    • 嘿 Burzum,谢谢你的好主意。我无法访问 viewVars。你能给我一个如何访问它的例子吗?提前致谢。
    • “无法访问”不是恰当的问题描述。检查集成测试的 API。实际上有 $this->_controller 可供我使用(Cake3)。根据 CakePHP 版本——您没有指定——访问视图变量会有所不同。检查 API 文档或手册。 :)
    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2014-09-01
    相关资源
    最近更新 更多