我在使用代码编写简单测试时遇到了一些麻烦。
上传excel文件并在uploade之后检查excel文件上的数据是否在数据库上可用是一个简单的过程。我的测试代码:
public function do_carga_vendedores(BTester $I)
{
$I->amOnPage('/admin/carga/vendedores');
$I->attachFile('templateupload', 'carga_vendedores.xlsx');
$I->click('Enviar');
$I->see('Cadastro feito com sucesso!');
$I->seeInDatabase('usuario', [
'cpf' => '332.895.032-08',
'nome' => 'Test1'
]);
$I->seeInDatabase('usuario', [
'cpf' => '776.676.558-63',
'nome' => 'Test2'
]);
}
}
生成:
Step I see "Cadastro feito com sucesso!"
Fail Failed asserting that /admin/carga/doRealizarCargaVendedor
检查输出文件时显示:
Fatal error: Call to a member function getType() on a non-object in /var/www/apps/shared/models/BaseModel.php on line 82
第82行代码:
switch ($message->getType()) {
我在$message
变量上完成了一个var_dump,结果是:
object(Phalcon\Mvc\Model\Message)[148]
protected '_type' => string 'PresenceOf' (length=10)
protected '_message' => string 'nome is required' (length=16)
protected '_field' => string 'nome' (length=4)
protected '_model' => null
可以找到BaseModel.php的完整代码here
但是如果我使用chrome上传文件,则问题不可重现。 我不知道这是否是phpbrowser问题,或者我的代码是否有缺陷。
OBS:框架:Phalcon 2.0.5 / Codeception 2.1.1