laravel - phpunit : 测试 api 并在同一个控制器中模拟一些方法,但模拟的方法不起作用
问题描述
控制器代码
class testController extends \Illuminate\Routing\Controller
{
public function test1() {
$a = $this->test2();
...
}
protected function test2() {
return '123';
}
}
单元测试代码
class Test extends TestCase
{
public function unittest()
{
$mockController = \Mockery::mock('App\Http\Controllers\testController')->makePartial()->shouldAllowMockingProtectedMethods();
$mockController ->shouldReceive('test2')->andReturn('456');
$response = $this->json('GET', action('testController@test1'));
$response->assertStatus(200);
}
}
什么时候进行单元测试,test2 方法总是返回 123,而不是 456 有什么帮助吗?谢谢。
解决方案
目前尚不清楚$this->json()
内部做什么(它不是普通 PHPUnit 的一部分),但无论如何,问题可能是您没有在 $mockController
任何地方注入,因此单元测试请求原始控制器。
推荐阅读
- php - redis连接成功时数据未发布到redis中
- nginx - nginx 请求应该去多个位置
- android - 无法理解 Lambda -> 运算符
- hyperledger-fabric - 在 Hyperledger Fabric 的多个组织中使用单个用户
- android - 我的应用程序在闲置一段时间后兑现
- javascript - Webpack - SyntaxError: Unexpected token {
- javascript - 如何在for循环内制作一个切换按钮以仅在单击的元素上激活
- python - 如何删除与列表元素相关的类型错误
- javascript - React 属性传播符号是否也传递给子代?
- kubernetes - 如何在 Kubernetes 集群上部署购物应用?