【问题标题】:Laravel and unit testing, mocking dataLaravel 和单元测试,模拟数据
【发布时间】:2014-10-23 12:25:55
【问题描述】:

我有以下控制器:

class ProjectController
{
    public function __Construct( IProjectRepository $projectRepo )
    {
        $this->projectRepository = $projectRepo;
    }

    public function ListWithPagination()
    {   
        $projects = $this->projectRepository->Paginate( 2 );
        return $projects;
    }
}

以及以下模型/存储库:

class EloquentProjectRepository implements IProjectRepository
{
    public function Paginate( $amount )
    {
        return Project::paginate( $amount );
    }
}

1.如何模拟数据以放入此测试?:
我不想在我的数据库中使用实际的项目,因为可能没有足够的项目来测试......而且我可能想确保第二页的第一个项目确实是我期望的项目。

/**
* Check that pagination amount returned is as expected.
*/
public function testCheckPaginationAmount()
{
    // Setup
    // Mock 3 Project items... Make sure 2 come back from page 1.

    // Act
    $response = $this->action('GET', 'ProjectController@ShowList');  

    // Assert
    $this->assertGreaterThan( 2, count( $response->getContent()[ 0 ] ) );   
}

2。我如何模拟已传递给控制器​​中 Paginate 函数的 $amount

感谢你们的帮助!

【问题讨论】:

    标签: php unit-testing laravel


    【解决方案1】:

    我认为您应该对您的存储库进行单元测试(例如使用 phpunit)并使用数据库进行您编写的测试。

    【讨论】:

    • 这是使用PHPunit的,有代码示例吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    相关资源
    最近更新 更多