当前位置: 首页 > 工具软件 > Mockery > 使用案例 >

php mockery单元测试,PHP单元测试和Mockery模拟

东方海
2023-12-01

答案是肯定的!如果您尊重代码中的某些可测试性原则,则可以将一个方法与同一类中的其他方法隔离开来.这是单元测试的目标.

看这个例子:

class User {

public function years()

{

return floor($this->months() / 12);

}

public function months()

{

// Database call or anything else, it's a black box !

}

}

class UserTest extends TestCase {

public function testYearsReturnTheNumberOfYears()

{

$user = \Mockery::mock('User[months]');

$user->shouldReceive('months')->andReturn(18);

assertEquals(1, $user->years());

}

}

即使方法数月被打破,测试也会通过.阅读mockery documentation以获得更多解释.

模拟是单元测试的关键.如果没有此工具,当您的代码中出现问题时,所有测试都会失败,您无法找到错误的来源. PHP不够灵活,无法模拟Ruby或Javascript中的所有内容,但是如果设计模式良好,您可以做得很好.

一个非常好的例子是Laravel,所有的核心类都可以被嘲笑.像这样,您可以模拟数据库调用或电子邮件发送中的错误.

 类似资料: