【发布时间】:2023-03-04 20:26:01
【问题描述】:
所以我有类名Verify,它调用 SMS 供应商来验证 otp。现在我正在 Laravel 中编写 http 测试。
如何编写 HTTP 测试,以便在执行该路由时模拟 Verify 被称为不是真正的实现。
【问题讨论】:
-
你能分享所有相关类的类实现吗
所以我有类名Verify,它调用 SMS 供应商来验证 otp。现在我正在 Laravel 中编写 http 测试。
如何编写 HTTP 测试,以便在执行该路由时模拟 Verify 被称为不是真正的实现。
【问题讨论】:
如果没有看到你的一些实现,包括测试和被测试的类,很难给出准确的答案,但要检查的一件事是,在你创建了你的模拟之后,你需要将它绑定到服务容器中.
这是一个粗略的例子,对类或其方法一无所知:
$mock = Mockery::mock(Verify::class);
$mock->shouldReceive('verify')
->once()
->andReturn(true);
App::instance(Verify::class, $mock);
然后确保无论您在何处创建和使用 Verify 类,您都可以从服务容器中检索一个实例。
$verify = App::make(Verify::class);
// instead of $verify = new Verify();
此时,您应该在测试期间使用模拟实例,而不是真正的类。更多关于绑定和服务容器的信息可以在in the documentation、and on Laracasts找到
【讨论】: