unit-testing - 保存Associates Cakephp时如何测试添加

标签 unit-testing cakephp testing save cakephp-2.0

如何测试这样的方法:

public function add() {
if (!empty($this->request->data)) {
        $this->Contest->create();

        if ($this->Contest->saveAll($this->request->data)) {


            $contestStage['name'] = 'First - ' . $this->request->data['Contest']['name'];
            $contestStage['contest_id'] = $this->Contest->id;

            if ($this->Contest->ContestStage->save($contestStage)) {
                $this->setMessage(__ADD_OK, 'Konkurs');
                $this->redirect(array(
                    'action' => 'view',
                    $this->Contest->id
                ));
            } else {
                $this->setMessage(__ADD_ERROR, 'Konkurs');
            }
        } else {
            $this->setMessage(__ADD_ERROR, 'Konkurs');
        }
    }
}

我的测试方法:

public function testAdd() {
        $this->generateWithAuth(self::ADMIN); // genereting controller here
        $url = $this->getUrl('add');
        $options2 = array(
            'method' => 'post',
            'data' => array(
                'Contest' => array(
                    'id' => 3,
                    'owner_id' => 1,
                    'name' => 'Testing',
                    'created' => '2012-11-16 12:02:33.946',
                ),
            ),
            );
        $this->testAction($url, $options2); 
        $this->assertArrayHasKey('Location', $this->headers, 'No redirection');
        $this->assertEquals($this->Contest->hasAny(array('Contest.name' => 'Testing')), true);    
        $messages = Set::extract('{flash}.message', CakeSession::read('Message'));
    }

我收到的是

PDOEXCEPTION
SQLSTATE[23505]: Unique violation: 7 BŁĄD: double key value violates a constraint

唯一性“contest_stages_pkey”详细信息: key (id)=(1) 已经存在。

因为这是真的,我有一个 contestStage id=1 为什么它不使用下一个;<

最佳答案

有点奇怪,Cakephp 没有记录如何很好地测试。

问题是您插入了两次竞赛 ID。您应该确保您使用的数据库具有测试前缀(或任何您喜欢的前缀)并清除测试表。

作为替代方案,您可以改用固定装置。数据会产生更好的测试用例,因为它会为您预先填充数据,以便您随时了解数据库中的内容。仍然要确保使用前缀,我犯了一次错误,没有这样做,每次都会毁掉我的整个数据库

祝你好运

关于unit-testing - 保存Associates Cakephp时如何测试添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13493610/

相关文章:

node.js - 如何通过 Mocha 测试运行时参数?

angular - 如何测试子组件@output

c# - 如何在 WinForms 应用程序中测试 Web 浏览器控件的 Web UI?

php - Cakephp 3 : contain() function result a nested data

android - 在 Android : item not found 中测试订阅

c++ - 通过某种形式的反射对 C++ 中的 C 数据结构进行通用访问?

python - 你如何从pycharm运行nosetest?

c# - 线程安全的单元测试?

git - git add -f 后忽略修改

javascript - jQuery UI : "Uncaught Syntax Error: Unexpected token <" in one environment, 但不是另一个