给定这个类:
MyClass
{
public function getValueFrom($foo)
{
return 'data';
}
}
我想用特定的参数测试对函数getValueFrom
的特定调用:
$mock = Mockery::mock(MyClass);
$mock->shouldReceive('getValueFrom')
->with('foo')
->once()
->andReturn('bar');
(new MyClass)->foo('foo'); // returns bar
(new MyClass)->foo('someting-else'); // throws Mockery\Exception\NoMatchingExpectationException
如果我使用不同于'foo‘的参数调用相同的方法,它会抛出NoMatchingExpectationException。如何将未考虑的场景委托给真正的类?检查的行为是:
$mock = Mockery::mock(MyClass);
$mock->shouldReceive('getValueFrom')
->with('foo')
->once()
->andReturn('bar');
(new MyClass)->foo('foo'); // returns bar
(new MyClass)->foo('someting-else'); // return data
(new MyClass)->foo('anything-else'); // return data
发布于 2018-06-27 18:21:14
为了防止错误被评论,这是可行的:
$mock = Mockery::mock(MyClass);
$mock->shouldReceive('getValueFrom')
->with('foo')
->once()
->andReturn('bar');
// here!!
$mock->shouldDeferMissing();
(new MyClass)->foo('foo'); // returns bar
(new MyClass)->foo('someting-else'); // return data
(new MyClass)->foo('anything-else'); // return data
https://stackoverflow.com/questions/51069178
复制