小编Xia*_* Li的帖子

php:使用“模拟”来模拟在另一个静态方法中调用的静态方法

我想模拟一个静态方法,该方法已在使用Mokcery的另一种方法中使用,如下所示:

Class SomeClass
{
   public static function methodA()
   {
     .....;
     self::B();
   } 
   public static function methodB()
   {
     Do SomeThing
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我想模拟方法B,并使用方法A,则模拟功能不起作用,仅因为方法B在方法A中使用,如下所示

 use Mockery as m;
   $mocktest = m::mock->('SomeClass[B]');
   $mocktest->shouldReceive('B')->andReturn("expectedResult");
   $mocktest->methodA();
Run Code Online (Sandbox Code Playgroud)

上面的代码将导致methodB仍返回其原始结果,而不是'expectedResult'。我希望方法A中使用的方法B被嘲笑,我该如何操作?

php testing phpunit mockery

5
推荐指数
1
解决办法
5239
查看次数

标签 统计

mockery ×1

php ×1

phpunit ×1

testing ×1