2

phpunit作曲家の依存関係として追加しましたcomposer update

次のような簡単なテストを作成しました。

$user = new User;
$user->save();

走る

vendor/bin/phpunit

また

vendor/bin/phpunit -c phpunit.xml

しかし、私は得る

Undefined method User::save()

同時に、それ$user instanceof Eloquentが真実であることもわかります。

さらに悪いことcall('POST', '/posts')に、そうすると同じ問題が発生します-Undefined method Post::save()

何か不足していますか?テストを正しく実行するには?

関連するコード部分:

https://gist.github.com/anonymous/5849706

アップデート

レポをhttp://github.com/laravel-test-948320/bearded-bugfixesにプッシュしました

実際に extends Eloquent を extends Illuminate\Database\Eloquent\Model に変更すると問題は解決しますが、それでも何が起きているのか理解したいと思います。

4

4 に答える 4

1

私はあなたのテスト スイート全体を再作成しました (これを読みながら私のものをセットアップしていました)。すべて成功したテストなので、あなたが持っているバージョンを知りたいです:

  • phpのバージョン
  • composer.json の laravel/framework バージョン
  • phpunit のバージョン

call() が未定義の save() になるのも奇妙です...

他のパッケージがインストールされているか、名前空間を使用していますか?

于 2013-06-25T07:06:31.880 に答える
1

Eloquent の代わりに Illuminate\Database\Eloquent\Model を拡張してみて、違いが生じるかどうかを確認してください。自動読み込みの問題である可能性があります。アプリからモデルを保存できますか? たとえば、ルートでモデルを作成し、保存機能の結果をダンプできますか?

もう 1 つの質問ですが、コンポーザーまたは laravel ClassLoader (global.php ファイル) を介してモデルをロードしていますか? 以前、ClassLoader を使用するときにクラスを自動ロードする際に問題がありました。

laravel はエイリアスを処理するため、これは作曲家の問題ではないので、オートローディングをダンプしても何も変わらないはずです。Eloquentエイリアスがそのファイルでコンパイルされている場合、「artisan clear-compiled」を実行するとうまくいくかもしれません。

現時点では他に何も考えられません。他のアイデアはありますか?

于 2013-06-25T12:27:05.400 に答える
0

テスト クラスの __construct() に parent::setUp() を追加してみてください

于 2013-12-16T05:06:45.433 に答える
0

あなたの $user および $post クラスは Eloquent クラスを拡張していないように思えます。

ファイルにこれがあることを確認してください:

class User extends Eloquent {
...
}
于 2013-06-19T20:54:21.837 に答える