承接 skrepr/dto-tester 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

skrepr/dto-tester

最新稳定版本:v0.2.6

Composer 安装命令:

composer require skrepr/dto-tester

包简介

Skrepr Data Transfer Object Tester

README 文档

README

skrepr

Data Transfer Object - Tester

This is a simple library to make unit tests for DTO's and Entity objects easier. By using this DtoTestCase it will automatically test all public properties and get/set combinations.

Of course this is not just to satisfy the "coverage", but it is to test the basics and makes sure that your DTO's are always behave the same as you expect.

Note that you always must create your own extra tests for specific tasks and any business logic.

Installation

You can install the package using the Composer package manager. It is recommended that you install this only as a development package. You can install it by running this command in your project root:

composer require --dev skrepr/dto-tester

Usage

The abstract class DtoTestCase has 3 required methods for you to implement:

  • getInstance
  • getTestValuesForProperty
  • getTestValuesForMethod

And at this moment one optional setting: - $markEmptyAsSkipped

The getInstance method should return a testable object. This object is only requested twice during all the tests. First for the properties and the second time when the methods are tested.

Next the getTestValuesForProperty and getTestValuesForMethod methods should return an array with possible values that should be tested.

The getTestValuesForProperty method gets the property name and type, here you can check and give values you want to test. You can also give a null value instead of an array, then the tests for that property are skipped (unless it is a nullable-property). The nullable variant will always be tested, it is not possible to use null as a value within the array.

The getTestValuesForMethod method works in the same way, it only gives back the method name extra.

For union types, the property/parameter will be tested for every type in the union.

When you don't have special needs, you can use "match" like this:

 protected function getTestValuesForMethod(string $methodName, string $parameterName, string $parameterType): ?array { return match ($parameterType) { 'int' => [1, 42, 1337], 'string' => ['test', 'skrper'], 'bool' => [true, false], SomeClass::class => [new SomeClass(), $this->createMock(SomeClass::class)] }; }

It is not recommended to use a "default" when using a match like this. In fact, you will get a nice readable exception, so you know what you missed.

Known issues

  • Readonly properties are not supported
  • Not yet possible to test for other result value from getter

统计信息

  • 总下载量: 1.37k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 2
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固