How can I get PHPUnit MockObjects to return different values based on a parameter?

前端 未结 11 1609
忘掉有多难
忘掉有多难 2020-12-04 05:43

I\'ve got a PHPUnit mock object that returns \'return value\' no matter what its arguments:

// From inside a test...
$mock = $this->getMock(\         


        
11条回答
  •  失恋的感觉
    2020-12-04 06:36

    You would probably want to do a callback in a OOP fashion:

    getMock('class_name', array('method_to_mock'));
            $object->expects($this->any())
                ->method('method_to_mock')
                ->will($this->returnCallback(array($this, 'returnCallback'));
    
            $object->returnAction('param1');
            // assert what param1 should return here
    
            $object->returnAction('param2');
            // assert what param2 should return here
        }
    
        public function returnCallback()
        {
            $args = func_get_args();
    
            // process $args[0] here and return the data you want to mock
            return 'The parameter was ' . $args[0];
        }
    }
    ?>
    

提交回复
热议问题