好了 - 我的坎坷之旅的測試(與laravel)繼續...Laravel測試嘲笑對象的方法沒有找到
我已經創建了一個實例和一個「倉庫」,這我現在想測試。然而,在這樣做時,我得到一個錯誤,該類中的方法未找到。對我而言,這意味着這個班級至少被發現。
我加入以下到配置/ app.php:
//custom service providers
'GolfmanagerServiceProvider'
我的服務提供商是:
class GolfmanagerServiceProvider extends ServiceProvider {
public function register()
{
$this->app->bind(
'golfmanager\service\creator\TicketCreatorInterface',
'golfmanager\service\creator\TicketCreator'
);
}
}
我的界面:
interface TicketCreatorInterface {
public function createTicket($input, $book);
}
我的 '倉庫' (這是正確的嗎?):
Class TicketCreator implements TicketCreatorInterface {
protected $ticket;
public function __construct(TicketAudit $ticketAudit)
{
$this->ticket = $ticketAudit;
}
public function createTicket($input, $book) {
$counter = $input['start'];
while($counter <= $input['end']) {
$this->$ticket->create(array(
'ticketnumber'=>$counter,
'status'=>'unused',
'active'=>1
));
$this->ticket->book()->associate($book);
$counter = $counter+1;
}
}
}
TicketAudit是雄辯模型
我的測試,到目前爲止是:
public function testCreateTicketBindsTicketAuditFromRepository()
{
// Arrange...
$repository = Mockery::mock('TicketAudit');
$ticketCreator = Mockery::mock('TicketCreatorInterface');
$book = Mockery::mock('Book');
$repository->shouldReceive('create')
->with(array(
'ticketnumber'=>1000,
'status'=>'unused',
'active'=>1
), $book)
->times(2)->andReturn("true");
$book->shouldReceive('find')->once()->andReturn(1);
App::instance('TicketCreatorInterface', $repository);
// Act...
$response = $ticketCreator->createTicket(array('start'=>1000, 'end'=>1001), $book);
// Assert...
//still got to do this bit....
}
我不知道應用程序實例是否應該存在 - 有,我已經通過該服務做到了這一點供應商?
我的錯誤是:
BadMethodCallException: Method TicketCreatorInterface::createTicket() does not exist on this mock object
我很新的測試 - 而這種做法(創建接口),因此,教程和書籍都拿起位 - 這不是點擊尚未究竟應該是什麼像我一樣去學習
這次我犯了什麼愚蠢的錯誤?
我已經完成了作曲家更新,作曲家安裝和作曲家轉儲自動加載,但迄今爲止沒有效果。
謝謝 - 那有效 - 我仍然試圖理解測試 - 你的解釋已經幫助再次感謝 – Ray