Могу ли я игнорировать проверку типа аргумента в методе мошенничества? - PullRequest
0 голосов
/ 04 ноября 2018

Я пишу тест для класса обслуживания, который зависит от другого класса обслуживания.

foo.php

class Foo {

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

 public function fooMethod()
 {
  $getSomeArrayOrNull = null;
  $this->bar->barMethod($getSomeArrayOrNull);
 }

}

Bar.php

class Bar {


 public function barMethod(array $array)
 {
   return null;
 }

}

test.php

class Test extends TestCase {
 public function testIt()
 {
  $bar = Mockery::mock(Bar::class);
  $bar->shouldReceive('barMethod')->withAnyArgs()->andReturn(true);
  $foo = new Foo();
  // this throws an error because invalid argument type in Bar method
  $foo->fooMethod();
 }
}

Могу ли я как-то сказать издевательство над проверкой типов в $bar->barMethod()? Я пишу модульный тест, и я хотел бы, чтобы эта часть кода была полностью смоделирована.

Это неприятный запах кода, я должен просто высмеять свойство $getSomeArrayOrNull? (ведьма означает всегда массив)

...