【问题标题】:Yii fixture objects are null when trying to access themYii 夹具对象在尝试访问它们时为空
【发布时间】:2013-04-29 23:15:54
【问题描述】:

我有以下测试文件

<?php

class DisplayAlbumTest extends CDbTestCase
{

  public $fixtures = array(
    'displayalbums' => 'DisplayAlbum',
    'displayphotos' => 'DisplayPhoto',
  );

  /**
   * Get title
   * 
   * @group v1.0
   * @group now
   */
  public function testGetTitle()
  {
    $oAlbum = $this->displayalbums('get_title');

    var_dump($oAlbum);

    die('nope!');

    $this->assertEquals('Get title test', $oAlbum->getTitle());
  }

}

及其相关的夹具文件

<?php
return array(
  'get_title' => array(
    'title' => 'Get title test'
  )
);

以及以下配置

<?php
Yii::setPathOfAlias('api', '../api/');

return CMap::mergeArray(
  require(dirname(__FILE__).'/main.php'),
  array(
    'components'=>array(
      'fixture'=>array(
        'class'=>'system.test.CDbFixtureManager',
      ),
      /* uncomment the following to provide test database connection
      'db'=>array(
        'connectionString'=>'DSN for test database',
      ),
      */
      'db'=>$TEST_DB_SETTINGS,
    ),
  )
);

运行测试时数据被插入到数据库中,但var_dump 打印出NULL。如果我尝试访问模型上的任何方法,我会收到以下错误(因为我试图访问 NULL 上的方法) PHP 致命错误:在非对象上调用成员函数 getTitle()

使用不同夹具的其他模型的其他测试没有任何问题,但使用与此模型测试用例相同的夹具的测试失败。

如果我在测试中执行var_dump($this-&gt;displayalbums),这就是我得到的结果:

array(1) {
  ["get_title"]=>
  array(2) {
    ["title"]=>
    string(14) "Get title test"
    ["displayalbumid"]=>
    string(1) "1"
  }
}

我可以使用数组中的数据创建新对象并测试方法,但这意味着我必须重写我的所有测试(此文件中的其他测试因此而失败),这很奇怪,因为我使用了这个其他测试中没有失败的方法。

我查看了 MySQL 日志,最后运行的查询是选择我想要的专辑的查询

SELECT * FROM `DisplayAlbum` `t` WHERE `t`.`displayalbumid`=60 LIMIT 1

如果我运行查询,它会返回正确的结果,因此问题不在于数据库。

当我尝试从夹具访问项目时,为什么值为 NULL?

【问题讨论】:

  • 同样的问题,你找到解决办法了吗?
  • 我几乎重写了所有涉及并修复它的内容。不过没找到原因。

标签: yii


【解决方案1】:

我遇到了同样的问题,解决方案是默认范围“阻止”了它。

在 mysql 中,我将属性的默认属性设置为零,但默认范围条件是 $t.'attribute' = 1。可能你有一个类似的问题......

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 2012-02-12
    • 2014-09-24
    • 1970-01-01
    • 2017-08-17
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多