【问题标题】:Mock objects when writing http tests in laravel在 laravel 中编写 http 测试时模拟对象
【发布时间】:2023-03-04 20:26:01
【问题描述】:

所以我有类名Verify,它调用 SMS 供应商来验证 otp。现在我正在 Laravel 中编写 http 测试。

如何编写 HTTP 测试,以便在执行该路由时模拟 Verify 被称为不是真正的实现。

【问题讨论】:

  • 你能分享所有相关类的类实现吗

标签: laravel mocking phpunit


【解决方案1】:

如果没有看到你的一些实现,包括测试和被测试的类,很难给出准确的答案,但要检查的一件事是,在你创建了你的模拟之后,你需要将它绑定到服务容器中.

这是一个粗略的例子,对类或其方法一无所知:

$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 documentationand on Laracasts找到

【讨论】:

    猜你喜欢
    • 2018-02-16
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    相关资源
    最近更新 更多