A force de tripatouiller, j’ai fini par trouver comment bouchonner la fonction PHP native mail(), avec le code suivant :
$this
->assert('mail')
->given($this->newTestedInstance())
->if($this->function->mail = true)
->then
->boolean($this->testedInstance->sendMail('contact@example.com', 'Subject', 'Content'))
->isTrue()
->function('mail')
->wasCalled()
->once()
->assert('mail failed')
->given($this->newTestedInstance())
->if($this->function->mail = false)
->then
->exception(function () { $this->testedInstance->sendMail('contact', 'Subject', 'Content'); })
;
Cela dit je n’ai toujours pas compris à quoi servait les lignes 4 et 14 !
Mais bon on va dire que c’est pas grave et maintenant je galère à bouchonner la fonction PHP native fsockopen() ; j’ai essayé avec ce code mais nope, ça bouchonne pas !
$header_from = 'From: contact@dotclear.org';
$header_type = 'Content-Type: text/plain; charset=UTF-8;';
$this
->assert('mail')
->given($this->newTestedInstance())
->if($this->function->fsockopen = true)
->then
->variable($this->testedInstance->mail('contact@example.com', 'Subject', 'Content', $header_from))
->isNotFalse()
->function('fsockopen')
->wasCalled()
->once()
->assert('mail no from')
->given($this->newTestedInstance())
->if($this->function->fsockopen = false)
->then
->exception(function () { $this->testedInstance->mail('contact@example.com', 'Subject', 'Content'); })
;
Je trouve ça un poil lourd tout de même devoir faire du reverse-engineering sur l’outil de test ! Bon, il est où le code source de la propriété function (utilisée ligne 7 et 17) ?
Bon le code va pas servir à grand chose surtout qu’il y a 0 (zéro) documentation dedans, et quand je dis 0 c’est vraiment zéro, pas un seul commentaire ! J’ai rarement vu ça dans un projet de cette taille…