laravel - 如何在服务容器测试中注册模拟对象
问题描述
我需要向服务容器注册一个对象。
我尝试使用以下代码,但我得到了
错误调用未定义的方法 ::process()
$o = $this->instance(Service::class, Mockery::mock(Service::class, function ($mock) {
$mock->shouldReceive('process')->once()->andReturn(10);
}));
$this->app->instance(Service::class, $o);
dd((new Service())->process());
解决方案
首先对于模拟一个对象,这应该足够了。不需要中间步骤。
$this->instance(Service::class, Mockery::mock(Service::class, function ($mock) {
$mock->shouldReceive('process')->once()->andReturn(10);
}));
要加载模拟,您必须通过容器将其取出,您最近已将其与容器绑定。有很多方法可以做到这一点$this->app->instance()
,,,app()
等等resolve()
。
dd($this->app->instance(Service::class)->process());
推荐阅读
- sql - 使用 React 在数据库更改时重新加载子项
- python - pd.DataFrame.from_dict(data) 的 Spark 数据帧版本
- javascript - 如何使用 Choicesjs ajax?
- sqlite - 从对列具有特定值的记录中选择 SQLite 中的随机记录
- snowflake-cloud-data-platform - 雪花数据仓库 - 使用字母数字字符而不是整数生成维度 id
- batch-file - 有没有办法通过写入自身来在批处理文件中创建持久变量?
- active-directory - PassportJS 错误:当绑定间歇性未完成时,不能对连接执行其他操作
- arrays - 如何在'awk'中插入一个数组?
- c# - 如何使用富文本框输入更改面板可见性
- python - 如何返回列表中数字总和的排序列表?