回答編集履歴

5

補足

2017/09/28 05:05

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -49,3 +49,5 @@
49
49
  $this->assertResponseContains('メールアドレスまたはパスワードが違います。');
50
50
 
51
51
  ```
52
+
53
+ 補足ですが、事前にフィクスチャなどでDB側にログインしようとしているユーザ情報が登録されている必要があります。

4

補足

2017/09/28 05:05

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -42,9 +42,9 @@
42
42
 
43
43
  ]);
44
44
 
45
- $this->assertResponseOk();
45
+ $this->assertResponseOk(); // 入力画面に戻される
46
46
 
47
- $this->assertSession(null, 'Auth.User.id');
47
+ $this->assertSession(null, 'Auth.User.id'); // セッションはない
48
48
 
49
49
  $this->assertResponseContains('メールアドレスまたはパスワードが違います。');
50
50
 

3

誤字

2017/09/28 05:00

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- *追記* 余談ですが、簡単なパスワード成功と失敗のテストを載せておきます。
13
+ **追記** 簡単なログインの成功と失敗のテストサンプル
14
14
 
15
15
 
16
16
 

2

追記

2017/09/28 04:59

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -3,3 +3,49 @@
3
3
 
4
4
 
5
5
  パスワードが正しいかどうかは、認証の際にのみ確認されます。ログイン中かどうかは、sessionにAuthがあるかないかだけで判断されます。
6
+
7
+
8
+
9
+ ----
10
+
11
+
12
+
13
+ *追記* 余談ですが、簡単なパスワード成功と失敗のテストを載せておきます。
14
+
15
+
16
+
17
+ ```
18
+
19
+ // ログイン成功
20
+
21
+ $this->post('/users/login', [
22
+
23
+ 'email' => 'test@example.jp',
24
+
25
+ 'password' => 'okpass'
26
+
27
+ ]);
28
+
29
+ $this->assertResponseSuccess(); // リダイレクト
30
+
31
+ $this->assertSession(1, 'Auth.User.id'); // セッションがあるか
32
+
33
+
34
+
35
+ // ログイン失敗
36
+
37
+ $this->post('/users/login', [
38
+
39
+ 'email' => 'test@example.jp',
40
+
41
+ 'password' => 'badpass'
42
+
43
+ ]);
44
+
45
+ $this->assertResponseOk();
46
+
47
+ $this->assertSession(null, 'Auth.User.id');
48
+
49
+ $this->assertResponseContains('メールアドレスまたはパスワードが違います。');
50
+
51
+ ```

1

誤植

2017/09/28 04:58

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -1,4 +1,4 @@
1
- `$this->session()`に認証した結果の情報をしまってアクセスしているので、テストコードとしてはリダイレクトされないで正しいと思いますよ。`$this->session()`をしないで`$this->get('/test/test');`をすれば、リダイレクトされると思います。
1
+ `$this->session()`に認証した結果の情報を設定してアクセスしているので、テストコードとしてはリダイレクトされないで正しいと思いますよ。`$this->session()`をしないで`$this->get('/test/test');`をすれば、リダイレクトされると思います。
2
2
 
3
3
 
4
4