質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

4931閲覧

CSVダウンロードのアサーションの仕方を教えてください

chokochokochok

総合スコア46

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/11/05 10:04

編集2018/11/05 12:08

いつもお世話になっております。
現在、下記のメンバー関数のユニットテストを作成しています。
その中で躓いているのが、200が返ってくることをテストしようとテストコードを書きましたが、

Call to undefined method {class-path}::assertStatus()

と怒られます。
resultの中身は

protected $content => string(0) "" protected $version => string(3) "1.0" protected $statusCode => int(200) protected $statusText => string(2) "OK" protected $charset => NULL public $original => NULL public $exception => NULL

が入っていました。statusの確認をすること自体が間違っているのでしょうか?
どなたか教えてください。
よろしくお願いします。

php

1public function downloadCsv() 2{ 3 $data = DB::table('table_name') 4 ->get(['id', 'flg']) 5 ->toArray(); 6 7 $file = new File(); 8 $csv = $file->createFile($data); 9 10 $headers = [ 11 'Content-Type' => 'text/csv', 12 'Content-Disposition' => 'attachment; filename="' . 'hoge.csv' . '"', 13 ]; 14 15 return response()->make($csv, 200, $headers); 16}
public function testtesttest() { $builder = Mockery::mock("\Illuminate\Database\Query\Builder"); $builder->shouldReceive('get->toArray')->andReturn([1]); \DB::shouldReceive('Table')->with('table_name')->once()->andReturn($builder); $mock = Mockery::mock('{createfileのクラス}'); $mock->shouldReceive('createFile'); $obj = new {presenter_name}(); $result = $obj->downloadCsv(); $this->assertStatus(200); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

HTTPテスト
laravelのバージョンが明記されて居ないのと
testtesttestの親クラスがどのように実装されてるか分からないの的確な回答はできませんが

疑う点としてはassertion名が間違ってる可能性。
assertResponseStatusなど

次にちゃんとTestCaseを継承してるか
その場合

php

1$response = $this->get('/'); 2$response->assertStatus(200);

というような使い方をします。

又は以下のような書き方をするといいかもしれません

php

1$this->assertEquals(200, $result->status());

開発の手助けになるかわかりませんが

php

1get_class_methods($result); 2//or 3get_class_methods($this);

など表示させて使えるmethodがあるか確認するといいでしょう

投稿2018/11/05 10:53

namda

総合スコア705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chokochokochok

2018/11/06 00:44

$this->assertEquals(200, $result->status()); で解決できました!!! 本当にありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問