если у меня есть
function let(Foo bar)
{
$this->beConstructedWith($bar);
}
это прекрасно работает, но как я могу передать аргументы в конструкцию? Это работает, только если у меня есть конструкция без передаваемых ей аргументов, и я использую сеттеры после построения. Разве нет способа построить нормально?
Я пытался найти это, но во всех примерах используются конструкции без аргументов. Благодарю.
Вы уже передаете аргумент своему конструктору, используя $ this-> beConstrutedWith ($ bar)
Первый пример, который вы запустите, используя метод из SUT, вызовет конструктор класса с помощью $ bar:
class Baz
{
public function __construct(Foo $bar)
{
}
}
Вот самая актуальная документация на let ()
http://phpspec.readthedocs.org/en/latest/cookbook/construction.html#using-the-constructor:
namespace spec;
use PhpSpec\ObjectBehavior;
use Markdown\Writer;
class MarkdownSpec extends ObjectBehavior
{
function it_outputs_converted_text(Writer $writer)
{
$this->beConstructedWith($writer);
$writer->writeText("<p>Hi, there</p>")->shouldBeCalled();
$this->outputHtml("Hi, there");
}
}
Других решений пока нет …