Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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:memcache\u connect在PHPUnit测试用例中不工作_Php_Memcached_Phpunit - Fatal编程技术网

PHPUnit:memcache\u connect在PHPUnit测试用例中不工作

PHPUnit:memcache\u connect在PHPUnit测试用例中不工作,php,memcached,phpunit,Php,Memcached,Phpunit,注意:没有phpunit,所有代码都可以正常工作 文件1:common.php: public function setNIMUID( $NIMUID ) { if(is_bool(Cache::get("$NIMUID"))) { $user_Array=array("_JID"=>(string)$NIMUID); Cache::set("$NIMUID",$user

注意:没有phpunit,所有代码都可以正常工作

文件1:common.php:

  public function setNIMUID( $NIMUID ) { 

        if(is_bool(Cache::get("$NIMUID"))) {                
                $user_Array=array("_JID"=>(string)$NIMUID);
                Cache::set("$NIMUID",$user_Array);
        } 
       $this->NIMUID=(string)$NIMUID ;
    }
   protected function __construct(array $servers) {  
    if(!$servers) {
        trigger_error('No memcache servers to connect', E_USER_WARNING);
    }
    for($i = 0, $n = count($servers); $i<$n; ++ $i) {
        ($con = memcache_connect(key($servers[$i]), current($servers[$i])))&&$this->mc_servers[] = $con; 
    }
    $this->mc_servers_count = count($this->mc_servers);
    if(!$this->mc_servers_count) {
        $this->mc_servers[0] = null;
    }
}
static function singleton() {
    //Write here where from to get the servers list from, like 
    global $memcache_servers;

    self::$instance||self::$instance = new Cache($memcache_servers);
    return self::$instance;
}
public function testCommon()
      { 
      $Common = new Common();
      $Common->setNIMUID("saurabh4"); 
      }
文件2:memcache.class.php
方法1:

  public function setNIMUID( $NIMUID ) { 

        if(is_bool(Cache::get("$NIMUID"))) {                
                $user_Array=array("_JID"=>(string)$NIMUID);
                Cache::set("$NIMUID",$user_Array);
        } 
       $this->NIMUID=(string)$NIMUID ;
    }
   protected function __construct(array $servers) {  
    if(!$servers) {
        trigger_error('No memcache servers to connect', E_USER_WARNING);
    }
    for($i = 0, $n = count($servers); $i<$n; ++ $i) {
        ($con = memcache_connect(key($servers[$i]), current($servers[$i])))&&$this->mc_servers[] = $con; 
    }
    $this->mc_servers_count = count($this->mc_servers);
    if(!$this->mc_servers_count) {
        $this->mc_servers[0] = null;
    }
}
static function singleton() {
    //Write here where from to get the servers list from, like 
    global $memcache_servers;

    self::$instance||self::$instance = new Cache($memcache_servers);
    return self::$instance;
}
public function testCommon()
      { 
      $Common = new Common();
      $Common->setNIMUID("saurabh4"); 
      }
方法3:

  public function setNIMUID( $NIMUID ) { 

        if(is_bool(Cache::get("$NIMUID"))) {                
                $user_Array=array("_JID"=>(string)$NIMUID);
                Cache::set("$NIMUID",$user_Array);
        } 
       $this->NIMUID=(string)$NIMUID ;
    }
   protected function __construct(array $servers) {  
    if(!$servers) {
        trigger_error('No memcache servers to connect', E_USER_WARNING);
    }
    for($i = 0, $n = count($servers); $i<$n; ++ $i) {
        ($con = memcache_connect(key($servers[$i]), current($servers[$i])))&&$this->mc_servers[] = $con; 
    }
    $this->mc_servers_count = count($this->mc_servers);
    if(!$this->mc_servers_count) {
        $this->mc_servers[0] = null;
    }
}
static function singleton() {
    //Write here where from to get the servers list from, like 
    global $memcache_servers;

    self::$instance||self::$instance = new Cache($memcache_servers);
    return self::$instance;
}
public function testCommon()
      { 
      $Common = new Common();
      $Common->setNIMUID("saurabh4"); 
      }
文件3:commonTest.php

  public function setNIMUID( $NIMUID ) { 

        if(is_bool(Cache::get("$NIMUID"))) {                
                $user_Array=array("_JID"=>(string)$NIMUID);
                Cache::set("$NIMUID",$user_Array);
        } 
       $this->NIMUID=(string)$NIMUID ;
    }
   protected function __construct(array $servers) {  
    if(!$servers) {
        trigger_error('No memcache servers to connect', E_USER_WARNING);
    }
    for($i = 0, $n = count($servers); $i<$n; ++ $i) {
        ($con = memcache_connect(key($servers[$i]), current($servers[$i])))&&$this->mc_servers[] = $con; 
    }
    $this->mc_servers_count = count($this->mc_servers);
    if(!$this->mc_servers_count) {
        $this->mc_servers[0] = null;
    }
}
static function singleton() {
    //Write here where from to get the servers list from, like 
    global $memcache_servers;

    self::$instance||self::$instance = new Cache($memcache_servers);
    return self::$instance;
}
public function testCommon()
      { 
      $Common = new Common();
      $Common->setNIMUID("saurabh4"); 
      }
$memcache_服务器变量:

 $memcache_servers = array(
    array('localhost'=>'11211'),
    array('127.0.0.1'=>'11211')
    );
错误:

      static function get($key) {
      return self::singleton()->getMemcacheLink($key)->get($key);
      } 
Fatal error: Call to undefined function memcache_connect()

单元测试应该是可重复的、快速的和隔离的。这意味着您不应该连接到外部服务来对类进行单元测试。 如果您想测试该公共类是否正常工作,那么应该测试它的行为,在本例中,就是按照预期调用缓存类

为此。通过mock,您可以设置一些期望值,比如对象将以特定的方式调用。如果您的类按预期被称为memcached类,则可以假定您的功能正常工作。您如何知道缓存类工作正常?因为缓存类将有自己的单元测试

为了使用mock(或stub),您需要更改编程方式并避免像Cache::set()中那样的静态调用。相反,您应该使用类实例和普通调用。怎么用?将缓存实例传递给公共类。这个概念叫做。您的通用代码如下所示:

public function __construct( $cache ) {
    $this->cache = $cache;
}

public function setNIMUID( $NIMUID ) { 

    if(is_bool($this->cache->get("$NIMUID"))) {                
            $user_Array=array("_JID"=>(string)$NIMUID);
            $this->cache->set("$NIMUID",$user_Array);
    } 
   $this->NIMUID=(string)$NIMUID ;
}