Come posso utilizzare Spy Object in PHPUnit? Puoi chiamare l'oggetto in imitazione, e dopo puoi dire quante volte ha chiamato. È Spia.Utilizzo di oggetti spia in PHPUnit?
Conosco "Mock" in PHPUnit come oggetto Stub e Oggetto Mock.
Come posso utilizzare Spy Object in PHPUnit? Puoi chiamare l'oggetto in imitazione, e dopo puoi dire quante volte ha chiamato. È Spia.Utilizzo di oggetti spia in PHPUnit?
Conosco "Mock" in PHPUnit come oggetto Stub e Oggetto Mock.
È possibile affermare quante volte un Mock è stato richiamato con PHPUnit quando si fa
$mock = $this->getMock('SomeClass');
$mock->expects($this->exactly(5))
->method('someMethod')
->with(
$this->equalTo('foo'), // arg1
$this->equalTo('bar'), // arg2
$this->equalTo('baz') // arg3
);
Quando si quindi chiamare qualcosa nel TestSubject che richiama il Mock, PHPUnit fallirà la prova quando SomeClass someMethod non è stato chiamato a cinque tempi con argomenti foo, bar, baz. C'è un numero di additional matchers besides exactly
.
Inoltre, PHPUnit as has built-in support for using Prophecy per creare doppie di test dalla versione 4.5. Si prega di fare riferimento allo documentation for Prophecy per ulteriori dettagli su come creare, configurare e utilizzare stub, spie e mock usando questo doppio framework di test alternativo.
C'è una spia tornato da $this->any()
, si può usare qualcosa di simile:
$foo->expects($spy = $this->any())->method('bar');
$foo->bar('baz');
$invocations = $spy->getInvocations();
$this->assertEquals(1, count($invocations));
$args = $invocations[0]->arguments;
$this->assertEquals(1, count($args));
$this->assertEquals('bar', $args[0]);
ho messo su un blog su questo a un certo punto: http://blog.lyte.id.au/2014/03/01/spying-with-phpunit/
Non ho idea di dove (se?) è documentato, ho trovato la ricerca attraverso il codice PHPUnit ...
Sono solo io o [è questo non è più il caso] (https://github.com/sebastianbergmann/phpunit/blob/60c32c5b5e79c2248001efa2560f831da11cc2d7/src/Framework/TestCase.php#L1898-L1901)? –
concordato https://github.com/sebastianbergmann/phpunit/issues/2326 – lyte
che cosa significa * "Puoi chiamare oggetto a imitazione su" * significa? * "quante volte ha chiamato" * ... vuoi dire * "è stato chiamato" *? – netcoder