2016-10-11 1 views
0

私はLaravelユニットテストの新機能です。私はユニットテストのために同じrepo関数を呼び出すことによって異なる出力を得る必要があります。Laravelユニットの同じ機能を2回テストして別の出力をテストします

これまでのところ、私のテストでは、このようなものです:

public function testReportOffdayWorked() 
{ 
    $input = [ 
     'from_date' => '2016/01/01', 
     'to_date' => '2016/01/03', 
    ]; 

    $webServiceRepositoryMock = Mockery::mock('App\Repositories\WebServiceRepository'); 
    $webServiceRepositoryMock->shouldReceive('callGet')->twice()->andReturn($this->issues); 
    $this->app->instance('App\Repositories\WebServiceRepository', $webServiceRepositoryMock); 

    $this->call('post', '/reporting/portal/report-offdays', $input); 
    $this->assertResponseOk(); 
    $this->assertTrue($this->response->original->getName() == "Reporting::report_offday_worked"); 
} 

私はcallGet機能用の2つの異なる出力を取得したいと思います。

答えて

0

callGet()の一連の戻り値またはクロージャを設定します。

andReturn(value1, value2, ...)

戻り値やクロージャの順序を設定します。たとえば、最初の呼び出しはvalue1と2番目の値2を返します。以降の擬似メソッドへのすべての呼び出しは、この宣言に与えられた最終値(または唯一の値)を常に返します。

docs.mockery

のPHPUnitのモックと嘲笑でそれを行う方法を以下に示します。

<?php 

class The { 
    public function answer() { } 
} 

class MockingTest extends \PHPUnit_Framework_TestCase 
{ 
    public function testMockConsecutiveCalls() 
    { 
     $mock = $this->getMock('The'); 
     $mock->expects($this->exactly(2)) 
      ->method('answer') 
      ->will($this->onConsecutiveCalls(4, 2)); 

     $this->assertSame(4, $mock->answer()); 
     $this->assertSame(2, $mock->answer()); 
    } 

    public function testMockeryConsecutiveCalls() 
    { 
     $mock = Mockery::mock('The'); 
     $mock->shouldReceive('answer')->andReturn(4, 2); 

     $this->assertSame(4, $mock->answer()); 
     $this->assertSame(2, $mock->answer()); 
    } 
} 
0

PHPUnitモッキングフレームワークの使用はどうですか?

$mock = $this->getMock('ClassName'); 

$mock->expects($this->at(0)) 
    ->method('getInt') 
    ->will($this->returnValue('one')); 

$mock->expects($this->at(1)) 
    ->method('getInt') 
    ->will($this->returnValue('two')); 

echo $mock->getInt(); //will return one 
echo $mock->getInt(); //will return two 
+0

正確に私はlaravel Mockオブジェクトでこのようなことが欲しいです。とにかくあなたの答えのおかげで:) – Lasith

関連する問題