Я могу только догадываться, поскольку не могу заглянуть в setWs
, но единственное отличие состоит в том, что ->at(0)
всегда пытается сопоставить функцию FIRST, вызывающую объект mock, и, возможно, конструктор WS
уже что-то вызывает ( как пример).
Поскольку я не могу сказать ничего более конкретного без исполняемого тестового примера, может быть, что-то общее:
С текущими возможностями PHPUnit Mocking API нет необходимости каждый раз использовать ->at(0)
. Все, что я видел, использует ->at()
, теперь можно выразить более красиво, используя ->will($this->logicalOr(...)
вместе с ->returnCallback()
или ->returnValueMap()
. См. Этот пример для at и returnCallback
Так что, если у вас нет сценария использования, когда вам НУЖНО (!) Убедиться, что вызовы методов находятся в правильном порядке, я бы не беспокоился об этом:)
Basic -> на примере, который работает, на всякий случай
<?php
class ClassToTest
{
public function willGetCalled($value) {}
}
class TestClass extends PHPUnit_Framework_TestCase
{
public function testWithExplicitMock()
{
$mock = $this->getMock(
'ClassToTest'
);
$mock->expects($this->at(0))
->method('willGetCalled')
->with(5);
$mock->willGetCalled(5);
}
}