});
$wrapper = new Wrapper(['box' => $this->box, 'name' => 'spec.stdClass']);
$dependency = $wrapper->get();
expect($dependency)->toBeAnInstanceOf("stdClass");
expect($wrapper->get())->toBe($dependency);
});
it("throws an exception if the dependency doesn't exists", function () {
$wrapper = new Wrapper(['box' => $this->box, 'name' => 'spec.stdUnexistingClass']);
expect(function () use($wrapper) {
$wrapper->get();
})->toThrow(new BoxException());
});
it("passes parameters to the Closure", function () {
$this->box->factory('spec.arguments', function () {
return func_get_args();
});
$params = ['param1', 'param2'];
$wrapper = new Wrapper(['box' => $this->box, 'name' => 'spec.arguments', 'params' => $params]);
expect($wrapper->get())->toBe($params);
});
it("override passed parameters to the Closure", function () {
$this->box->factory('spec.arguments', function () {
return func_get_args();
});
$params = ['param1', 'param2'];
$wrapper = new Wrapper(['box' => $this->box, 'name' => 'spec.arguments', 'params' => $params]);
$overrided = ['param3', 'param4'];
expect($wrapper->get('param3', 'param4'))->toBe($overrided);
});
});
});