草庐IT

PHPUnit 模拟函数?

我有一个有趣的场景,我需要定义一个函数以便对另一个函数进行测试。我要测试的功能看起来像这样:if(function_exists('foo')&&!function_exists('baz')){/***Bazfunction**@paraminteger$n*@returninteger*/functionbaz($n){returnfoo()+$n;}}我检查foo是否存在的原因是因为它可能会或可能不会在开发人员的项目中定义,并且函数baz依赖于foo。正因为如此,我只想定义baz是否可以调用foo。唯一的问题是到目前为止还无法为其编写测试。我尝试在PHPUnit配置中创建一个引导

PHPUnit 模拟函数?

我有一个有趣的场景,我需要定义一个函数以便对另一个函数进行测试。我要测试的功能看起来像这样:if(function_exists('foo')&&!function_exists('baz')){/***Bazfunction**@paraminteger$n*@returninteger*/functionbaz($n){returnfoo()+$n;}}我检查foo是否存在的原因是因为它可能会或可能不会在开发人员的项目中定义,并且函数baz依赖于foo。正因为如此,我只想定义baz是否可以调用foo。唯一的问题是到目前为止还无法为其编写测试。我尝试在PHPUnit配置中创建一个引导

php - 如何模拟使用 PHPUnit 实现 Iterator 接口(interface)的类?

我如何模拟实现Iterator的类的依赖项?接口(interface)是否稳健? 最佳答案 网上已经有一些解决这个问题的现有解决方案,但我看到的所有解决方案都有一个类似的弱点:它们依赖于->expects($this->at(n))。PHPUnit中的'expectsat'函数有一些奇怪的行为,因为计数器是针对模拟的每个方法调用的。这意味着,如果您在直接foreach之外对迭代器进行方法调用,则必须调整迭代器模拟。解决方案是创建一个包含基本迭代器数据(源数组和位置)的对象,并将其传递给returnCallback闭包。因为它是通过引

php - 如何模拟使用 PHPUnit 实现 Iterator 接口(interface)的类?

我如何模拟实现Iterator的类的依赖项?接口(interface)是否稳健? 最佳答案 网上已经有一些解决这个问题的现有解决方案,但我看到的所有解决方案都有一个类似的弱点:它们依赖于->expects($this->at(n))。PHPUnit中的'expectsat'函数有一些奇怪的行为,因为计数器是针对模拟的每个方法调用的。这意味着,如果您在直接foreach之外对迭代器进行方法调用,则必须调整迭代器模拟。解决方案是创建一个包含基本迭代器数据(源数组和位置)的对象,并将其传递给returnCallback闭包。因为它是通过引

php - 在 PHPUnit 中实现给定接口(interface)的模拟对象上的未定义方法?

我是单元测试和PHPUnit的新手。我需要一个mock,我可以完全控制它,实现ConfigurationInterface接口(interface)。测试对象是ReportEventParamConverter对象,测试必须检查我的对象和接口(interface)的交互。ReportEventParamConverter对象(此处简化):classReportEventParamConverterimplementsParamConverterInterface{/***@paramRequest$request*@paramConfigurationInterface$configu

php - 在 PHPUnit 中实现给定接口(interface)的模拟对象上的未定义方法?

我是单元测试和PHPUnit的新手。我需要一个mock,我可以完全控制它,实现ConfigurationInterface接口(interface)。测试对象是ReportEventParamConverter对象,测试必须检查我的对象和接口(interface)的交互。ReportEventParamConverter对象(此处简化):classReportEventParamConverterimplementsParamConverterInterface{/***@paramRequest$request*@paramConfigurationInterface$configu

php - 设置 PHPUnit Mock 后,我可以更改方法吗?

我试图在setUp中为所有被覆盖的方法创建一个具有默认值的模拟实例,然后在几个不同的测试中根据我正在测试的内容更改某些方法的返回值,而无需设置整个模拟。有办法做到这一点吗?这是我尝试过的方法,但是天真的方法不起作用。该方法仍然返回原始期望设置的值。第一次设置:$my_mock->expects($this->any())->method('one_of_many_methods')->will($this->returnValue(true));在另一个断言之前的另一个测试中:$my_mock->expects($this->any())->method('one_of_many_me

php - 设置 PHPUnit Mock 后,我可以更改方法吗?

我试图在setUp中为所有被覆盖的方法创建一个具有默认值的模拟实例,然后在几个不同的测试中根据我正在测试的内容更改某些方法的返回值,而无需设置整个模拟。有办法做到这一点吗?这是我尝试过的方法,但是天真的方法不起作用。该方法仍然返回原始期望设置的值。第一次设置:$my_mock->expects($this->any())->method('one_of_many_methods')->will($this->returnValue(true));在另一个断言之前的另一个测试中:$my_mock->expects($this->any())->method('one_of_many_me

php - 在 PHPUnit 中,如何模拟父方法?

我想测试一个调用同名父方法的类方法。有没有办法做到这一点?classParent{functionfoo(){echo'bar';}}classChild{functionfoo(){$foo=parent::foo();return$foo;}}classChildTestextendPHPUnit_TestCase{functiontestFoo(){$mock=$this->getMock('Child',array('foo'));//howdoimockparentmethodsandsimulateresponses?}} 最佳答案

php - 在 PHPUnit 中,如何模拟父方法?

我想测试一个调用同名父方法的类方法。有没有办法做到这一点?classParent{functionfoo(){echo'bar';}}classChild{functionfoo(){$foo=parent::foo();return$foo;}}classChildTestextendPHPUnit_TestCase{functiontestFoo(){$mock=$this->getMock('Child',array('foo'));//howdoimockparentmethodsandsimulateresponses?}} 最佳答案