如何为PHPunit测试设置特定的类属性?
phpunit在测试中设置一些默认配置值的最佳实践是什么 我想到的是这样的价值观如何为PHPunit测试设置特定的类属性?,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,phpunit在测试中设置一些默认配置值的最佳实践是什么 我想到的是这样的价值观 用户名 客户识别号。 以此类推 通常我会使用构造函数或一些setter来设置它,但我不知道当我只有这样一个类时该怎么做 class RestTest extends PHPUnit_Framework_TestCase { 例如,我正在尝试为REST和SOAP服务制作测试用例 我需要指定url/user和pass,但它们在dev/test/production上会更改,因此我需要一种干净的方法来指定它们。我想您正
class RestTest extends PHPUnit_Framework_TestCase {
例如,我正在尝试为REST和SOAP服务制作测试用例
我需要指定url/user和pass,但它们在dev/test/production上会更改,因此我需要一种干净的方法来指定它们。我想您正在寻找:
数据提供程序可以包含任何类型的信息,包括usersname、client id等。如果您在测试的每个测试用例中都需要一些默认值,如UserId,我建议您在类的
setUp
方法中设置这些值
仅举一个设置值的示例:
class MtTest extends PHPUnit_Framework_TestCase {
// As a property
private $testUser = 7;
// In the setUp
public function setUp() {
$this->testUser = 7;
$this->defaultName = "BOB";
$this->MtClass = new Mt();
}
public function testFoo() {
$this->assertTrue($this->MtClass->userExists($this->testUser));
}
}
如果有一组值需要输入到一个测试方法中,建议使用@SilverLight(+1)之类的数据提供程序
对评论的答复:
如果您需要某种环境设置(无论您想做什么,我现在就用username,因为我猜不出来),您可以在您的(或您传递到的文件--bootstrap)中设置它们:
bootstrap.php
<?php
define("PHPUnit_Username", "Fuuu");
// or
$phpunitConfig = new Array(
"username" => "fuu",
)
// or whatever suits you there. No reason for me to type a config object i guess
class MyPHPUnitConfig {
public function getUsername() { return "wtf"; }
}
我需要一个通用配置,它适用于任何函数,而不是提供程序。这是硬编码的,我需要一个灵活的配置。你会在普通类中编写这种代码吗?不会,因为这是一个单元测试。输入已知值,输出预期值。我没有料到您需要某种环境设置,只是在安装类或PHPUnit引导中拉取它们。我想这是正确的方法。为了清楚起见,我添加了一个小示例。如果您有一组额外的凭证只用于测试,我会创建一个baseTestClass,如“MySoapBaseTest”,并将它们放在那里。这还允许您在需要时模拟服务。这不是一个配置文件,但我想这是一个维护它们的好地方。如果每个开发人员都需要这个,我会说:将它们放在项目的(开发人员)应用程序配置中,然后在基类中将它们从那里拉出来:)因为这两个答案都不能满足您的需求,您能更深入地了解您需要什么吗?一个具体的例子可能会有所帮助。
<?php
define("PHPUnit_Username", "Fuuu");
// or
$phpunitConfig = new Array(
"username" => "fuu",
)
// or whatever suits you there. No reason for me to type a config object i guess
class MyPHPUnitConfig {
public function getUsername() { return "wtf"; }
}
<?php
class MyBaseTest extends PHPUnit_Framework_TestCase {
public function setUp() {
parent::setUp();
$this->config = new MyPHPUnitConfig();
}
}