小编Grz*_*jda的帖子

模拟应该被称为1次,但被称为0次

我对Laravel 5和PHPUnit有一些奇怪的问题.当我试图模仿Laravel的外观(例如Auth,View,Mail)时,我总是得到这个例外:

Mockery\Exception\InvalidCountException:方法发送("emails.register",数组('用户'=''对象(MCC\Models\Users\User)',),对象(Closure))来自Mockery_0_Illuminate_Mail_Mailer应该被正确调用1次但是叫了0次.

我有"should be called exactly 1 times but called 0 times."部分问题.这是我的测试代码:

public function testSendEmailToNewUserListener()
{
    $user = factory(MCC\Models\Users\User::class)->create();

    Mail::shouldReceive('send')
        ->with(
            'emails.register',
            ['user' => $user],
            function ($mail) use ($user) {
               $mail->to($user->email, $user->name)
                    ->subject('Thank you for registering an account.');
            }
        )
        ->times(1)
        ->andReturnUsing(function ($message) use ($user) {
            dd($message);
            $this->assertEquals('Thank you for registering an account.', $message->getSubject());
            $this->assertEquals('mcc', $message->getTo());
            $this->assertEquals(View::make('emails.register'), $message->getBody());
        });
}
Run Code Online (Sandbox Code Playgroud)

我放弃了dd($message),因为我想了解有关返回值的详细信息(看起来如何$message->getTo()).

我的TestCase类:

<?php

/**
 * Provides default values for functional tests.
 *
 * …
Run Code Online (Sandbox Code Playgroud)

php unit-testing laravel mockery

5
推荐指数
1
解决办法
5138
查看次数

标签 统计

laravel ×1

mockery ×1

php ×1

unit-testing ×1