gpt4 book ai didi

unit-testing - Zend 框架 : How to start PHPUnit testing Forms?

转载 作者:行者123 更新时间:2023-11-28 19:58:35 24 4
gpt4 key购买 nike

我无法让我的过滤器/验证器在我的表单上正常工作,所以我想创建一个单元测试来验证我提交到我的表单的数据是否被正确地过滤和验证。

我首先在 Zend Studio 中自动生成一个 PHPUnit 测试,这给了我这个:

<?php
require_once 'PHPUnit/Framework/TestCase.php';

/**
* Form_Event test case.
*/
class Form_EventTest extends PHPUnit_Framework_TestCase
{
/**
* @var Form_Event
*/
private $Form_Event;
/**
* Prepares the environment before running a test.
*/
protected function setUp ()
{
parent::setUp();
// TODO Auto-generated Form_EventTest::setUp()
$this->Form_Event = new Form_Event(/* parameters */);
}
/**
* Cleans up the environment after running a test.
*/
protected function tearDown ()
{
// TODO Auto-generated Form_EventTest::tearDown()
$this->Form_Event = null;
parent::tearDown();
}
/**
* Constructs the test case.
*/
public function __construct ()
{ // TODO Auto-generated constructor
}
/**
* Tests Form_Event->init()
*/
public function testInit ()
{
// TODO Auto-generated Form_EventTest->testInit()
$this->markTestIncomplete(
"init test not implemented");
$this->Form_Event->init(/* parameters */);
}
/**
* Tests Form_Event->getFormattedMessages()
*/
public function testGetFormattedMessages ()
{
// TODO Auto-generated Form_EventTest->testGetFormattedMessages()
$this->markTestIncomplete(
"getFormattedMessages test not implemented");
$this->Form_Event->getFormattedMessages(/* parameters */);
}
}

然后我打开终端,导航到目录,然后尝试运行测试:

$ cd my_app/tests/unit/application/forms
$ phpunit EventTest.php

Fatal error: Class 'Form_Event' not found in .../tests/unit/application/forms/EventTest.php on line 19

然后我在顶部添加一个 require_once 以包含我的 Form 类并再次尝试。现在它说找不到另一个类。我包括那个,然后再试一次。然后它说它找不到另一个类,另一个类,等等。我对所有这些其他 Zend_Form 类都有所有这些依赖性。我应该怎么办?我应该如何测试我的表单以确保我的验证器和过滤器被正确附加,并且它正在做我期望它做的事情。还是我的想法不对?

最佳答案

您必须使用 Zend Framework 应用程序配置来进行单元测试。如果您使用 PHPUnit 的“XML”配置,请添加一个在执行测试之前运行的引导文件。

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="TestConfig.php">
<testsuite name="XY">
<directory>./</directory>
</testsuite>
</phpunit>

在您的 TestConfig.php 中设置 AutoLoader 和其他所需的资源,或者像我的示例一样使用您的应用程序中的 config.ini。

$includeConfig = parse_ini_file(TEST_PATH . '/config/config.ini', true);

set_include_path(
implode(PATH_SEPARATOR, $includeConfig['includes'])
. PATH_SEPARATOR
. TEST_PATH . PATH_SEPARATOR
. get_include_path()
);
unset($includeConfig);

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('App_');

如果您需要更多提示,请查看 Zend Framework with PHPUNIT 教程 PHPUnit + Zend Framework

关于unit-testing - Zend 框架 : How to start PHPUnit testing Forms?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3057324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com