С тех пор, как я целую голову царапал голову - думаю, это что-то довольно незначительное, и я глупый.По сути, я тестирую модельный метод для своего приложения, и он работал около 2 часов назад, а затем я добавил еще несколько тестов, и с тех пор все они терпели неудачу, даже когда я вернулся к исходному базовому:
My Fixture:
class UserFixture extends CakeTestFixture {
var $name = 'User';
}
var $fields = array(
'id' => array('type' => 'integer', 'null' => false, 'default' => NULL, 'key' => 'primary'),
'group_id' => array('type' => 'integer', 'null' => false, 'default' => NULL, 'key' => 'index'),
'username' => array('type' => 'string', 'null' => false, 'length' => 16, 'key' => 'unique', 'collate' => 'utf8_unicode_ci', 'charset' => 'utf8'),
'password' => array('type' => 'string', 'null' => false, 'length' => 64, 'collate' => 'utf8_unicode_ci', 'charset' => 'utf8'),
'email' => array('type' => 'string', 'null' => false, 'length' => 128, 'key' => 'unique', 'collate' => 'utf8_unicode_ci', 'charset' => 'utf8'),
'status' => array('type' => 'integer', 'null' => false, 'default' => NULL, 'length' => 1),
'created' => array('type' => 'datetime', 'null' => true, 'default' => NULL),
'modified' => array('type' => 'datetime', 'null' => true, 'default' => NULL),
'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1), 'username' => array('column' => 'username', 'unique' => 1), 'email' => array('column' => 'email', 'unique' => 1), 'group_id' => array('column' => 'group_id', 'unique' => 0)),
'tableParameters' => array('charset' => 'utf8', 'collate' => 'utf8_unicode_ci', 'engine' => 'InnoDB')
);
Мой тест:
function startTest() {
$this->User =& ClassRegistry::init('User');
}
function endTest() {
unset($this->User);
ClassRegistry::flush();
}
function testNewUser(){
$data = array('User' => array('username' => 'johndoe', 'password' => 'john', 'email' => 'john@doe.com'));
$result = $this->User->newUser($data);
$expected = array(
'User' => array(
'id' => 1,
'group_id' => 3,
'username' => 'johndoe',
'password' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', //replaced hashed password with x's for posting
'email' => 'john@doe.com',
'status' => 0,
'created' => date('Y-m-d H:i:s'),
'modified' => date('Y-m-d H:i:s'),
)
);
$this->assertEqual($result, $expected);
}
Метод модели, который я пытаюсь проверить:
function newUser($data, $group = null){
$this->create();
$user['User']['username'] = $data['User']['username'];
$user['User']['password'] = $data['User']['password'];
$user['User']['email'] = $data['User']['email'];
$user['User']['status'] = 0;
$group = empty($group) ? 3 : $group;
$user['User']['group_id'] = $group;
//return true;
return $this->save($user);
}
Ошибка:
FAILED Equal expectation fails as [Boolean: false] does not match [Array: 1 items]
at [/Users/shaz/Sites/cakeapp/tests/cases/models/user.test.php line 36]
/Users/shaz/Sites/cakeapp/tests/cases/models/user.test.php -> UserTestCase -> testNewUser
Я полагаю, что false исходит от $ this-> save ($ user), который на самом деле не сохраняет и возвращает false;и я не уверен, почему, как это работает в приложении через контроллер ($ this-> data из формы).