내 Laravel5 응용 프로그램에 대한 방법은 내가 PhpSpec에서 테스트하기 위해 노력하고 있지만, 다음과 같은 오류를 던지고 계속 있습니다PhpSpec 호출 예상 정확한
App/Helpers/RecurrRule
37 ! it should return a recurrence collection method call:
Double\ChurchRepositoryInterface\P6->getChurchTimezone(1) was not expected.
Expected calls are:
- getChurchTimeZone(exact(1))
이 방법은 배열을 전달, 나는 조롱 할 모델의 getChurchTimezone 메소드가 타임 존을 리턴합니다.
방법 : 내 다른 사양 내가 자주 $double->method('someArgument')->willReturn('blah')
같은 일을하고 있어요,하지만 어떤 이유로이 특정한 경우가 작동하지 않는 나는 이유에 당황하고있어에서
public function __construct(Rule $rule, ArrayTransformer $arrayTransformer, ChurchRepositoryInterface $church)
{
$this->rule = $rule;
$this->arrayTransformer = $arrayTransformer;
$this->church = $church;
}
public function getRecurrenceCollection($schedule)
{
$timezone = $this->church->getChurchTimezone($schedule['church_id']);
// more code
}
.
배열의 복사본을 제공하려고 시도했습니다. 정수를 직접 입력 해 보았습니다. $ this-> church-> getChurchTimezone을 자체 메서드로 가져 와서 배열이나 정수를 전달하려고했습니다. 그러나 PhpSpec이 예상 호출 오류에서 '정확한'것으로 항상 돌아 오는 경우에도 마찬가지입니다.
사양 :
class RecurrRuleSpec extends ObjectBehavior
{
protected $schedule = [
'church_id' => 1,
'start' => '2014-11-21 10:36:07',
'end' => '2014-11-21 11:36:07',
'recurr_rule' => 'FREQ=WEEKLY;BYDAY=SU;',
'recurr_until' => '2015-02-22 10:36:07',
];
function it_is_initializable()
{
$this->shouldHaveType('App\Helpers\RecurrRule');
}
/**
* Setup our mock, with doubles matching our constructor
*/
function let($rule, $arrayTransformer, $church)
{
$rule->beADoubleOf('\Recurr\Rule');
$arrayTransformer->beADoubleOf('\Recurr\Transformer\ArrayTransformer');
$church->beADoubleOf('\App\Repositories\ChurchRepositoryInterface');
$this->beConstructedWith($rule, $arrayTransformer, $church);
}
function it_should_return_a_recurrence_collection($rule, $arrayTransformer, $church)
{
$church->getChurchTimeZone(1)->willReturn('Europe/Dublin');
// $church->getChurchTimeZone($this->schedule['church_id'])->willReturn('Europe/Dublin');
// $church->getChurchTimeZone(Argument::any())->willReturn('Europe/Dublin');
$rule->createFromString()->willReturn([]);
$arrayTransformer->transform()->willReturn([]);
$this->getRecurrenceCollection($this->schedule)->shouldReturn([]);
}
다음은 동일한 방법을 사용하고 당신은 사양에서와 다르게 메소드 이름의 철자 한
function it_should_return_a_one_dimensional_numeric_array_of_servers($config)
{
$expectedResult = ['domain.com', 'domain2.com'];
$config->get('servers')->willReturn($this->configGetReturn);
$this->serverArray()->shouldBeArray();
$this->serverArray()->shouldEqual($expectedResult);
}