Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为PHPunit测试设置特定的类属性?_Php_Unit Testing_Phpunit - Fatal编程技术网

如何为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上会更改,因此我需要一种干净的方法来指定它们。我想您正

phpunit在测试中设置一些默认配置值的最佳实践是什么

我想到的是这样的价值观
  • 用户名
  • 客户识别号。
  • 以此类推

    通常我会使用构造函数或一些setter来设置它,但我不知道当我只有这样一个类时该怎么做

    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();
        }
    }