Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
404 views
in Technique[技术] by (71.8m points)

php - undefined action() in phpunit

<?php

namespace TestsFeature;

use TestsTestCase;
use IlluminateFoundationTestingWithFaker;
use IlluminateFoundationTestingRefreshDatabase;

class MemberRegTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testExample()
    {
       $response = $this->call('GET', '/addmember');
      $response = $this->action('GET', 'MemberController@addmember');

    }
}

After testing gives me error

Error: Call to undefined method TestsFeatureMemberRegTest::action()

What i do wrong?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

There was an action method inside TestCase back to Laravel 4.x. This method has been replaced for new ones in different classes and packages. (You can confirm this reviewing the Laravel 5.6 TestCase class)

For the latest versions of Laravel, If you are trying to test a HTTP Request you could do:

    $response = $this->json('GET', 'api/addmember');
    $response->assertStatus(200) // or whatever you want to assert.

Now if you want to do browser tests, you should use the official Laravel Dusk. This package has very cool and useful methods to simulate user interactions with your site, as easy as this:

    $this->browse(function ($browser) use ($user) {
        $browser->visit('/login')
                ->type('email', $user->email)
                ->type('password', 'secret')
                ->press('Login')
                ->assertPathIs('/home');

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...