Validation 如何在PHPUnit中动态设置cakephp验证集
在CakePHP中,我编写了两个模型,一个是发票,另一个是产品。发票“与产品有许多”关联。发票有两个验证集,如“validateCreateInvoice”和“validateUpdateInvoice”等 我正在编写如下的PHPUnit测试用例来对验证集进行单元测试。那么,如何1)动态设置验证集?2) 验证PHPUnit中的模型和关联模型 我运行了以下代码,商户电子邮件和产品名称数据验证应该失败。但事实并非如此。错误转储为空。有什么问题吗? 注意:通过模型保存方法,验证规则运行良好,这意味着验证规则没有问题Validation 如何在PHPUnit中动态设置cakephp验证集,validation,cakephp,phpunit,Validation,Cakephp,Phpunit,在CakePHP中,我编写了两个模型,一个是发票,另一个是产品。发票“与产品有许多”关联。发票有两个验证集,如“validateCreateInvoice”和“validateUpdateInvoice”等 我正在编写如下的PHPUnit测试用例来对验证集进行单元测试。那么,如何1)动态设置验证集?2) 验证PHPUnit中的模型和关联模型 我运行了以下代码,商户电子邮件和产品名称数据验证应该失败。但事实并非如此。错误转储为空。有什么问题吗? 注意:通过模型保存方法,验证规则运行良好,这意味着验
App::import('Model', 'Invoice');
App::import('Model', 'Product');
App::uses('Validation', 'Utility');
App::uses('CakeFixtureManager', 'TestSuite/Fixture');
App::uses('CakeTestFixture', 'TestSuite/Fixture');
require_once 'PHPUnit/Framework/TestCase.php';
require_once 'PHPUnit/Autoload.php';
class InvoiceTest extends PHPUnit_Framework_TestCase {
public $sourceName = 'Invoice';
public function setUp() {
parent::setUp();
$this->Invoice=& ClassRegistry::init('Invoice');
$this->InvoiceValidation =& ClassRegistry::init('Validate');
}
public function tearDown() {
parent::tearDown();
unset($this->Model, $this->Source);
ConnectionManager::drop($this->sourceName);
}
public function testCreate() {
$data = array(
"merchantEmail" => "stest_1339339519_bizyahoo.com", // not a valid email address
"payerEmail" => "stest_1340973819_per@yahoo.com",
"currencyCode" => "USD",
"paymentTerms" => "Net10",
"Products" =>array(
0 => array (
"productName" => "", // product name shouldn't be empty
"description" => "From CocaCola",
"unitPrice" => 1.56,
"quantity" => 1,
"taxName" => "Tax1",
"taxRate" => 7
),
1 => array (
"productName" => "Pepsi1",
"description" => "From Pepsi",
"unitPrice" => 1.65,
"quantity" => 1,
"taxName" => "Tax2",
"taxRate" => 7
),
),
);
//Create Invoice
$invoice=new Invoice();
$invoice->set($data);
$this->Invoice->setValidation('validateCreateInvoice');
$errors = $this->Invoice->validates($data); // validation should fails because of invalid merchant email address
Debugger::dump($errors); // output is null
$errors1 = $this->Invoice->validateAssociated($data); // validation should fail because product name is empty
Debugger::dump($errors1); // output is null
}
}
您似乎使用了来自面包店的非核心多重验证行为,而测试套件似乎不尊重这种行为 我将放弃多重验证行为,支持std验证的标准“on”属性: