因此,我有一个类名Verify
,该类调用SMS供应商来验证otp。现在,我在Laravel中编写http测试。
如何编写HTTP测试,以便在执行该路由时不会将模拟Verify
称为真正的实现。
答案 0 :(得分:0)
在没有看到您的某些实现(包括测试和要测试的类)的情况下很难给出确切的答案,但是要检查的一件事是,在创建模拟之后,需要将其绑定到服务容器中
这是一个粗略的示例,对该类或其方法一无所知:
$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