質問編集履歴

2

修正

2021/08/10 09:07

投稿

study_code
study_code

スコア1

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- factorybotを使ってレコードの重複を排除してテストデータを作成したいです。
5
+ Rails、Rspec、factorybotを使ってレコードの重複を排除してテストデータを作成したいです。
6
6
 
7
7
 
8
8
 
@@ -188,6 +188,8 @@
188
188
 
189
189
  - Rails 6.1
190
190
 
191
+ - rspec 3.10.0
192
+
191
193
 
192
194
 
193
195
  ご教示のほどよろしくお願いします。

1

修正

2021/08/10 09:07

投稿

study_code
study_code

スコア1

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- 記事に対してカテゴリーがあるモデルでテストを書きたいと思っています。
9
+ 記事(article)に対してカテゴリー(category)があるモデルでテストを書きたいと思っています。
10
10
 
11
11
  作成したテーブルは下記の通りです。
12
12
 
@@ -24,7 +24,9 @@
24
24
 
25
25
  ### 実現したいこと
26
26
 
27
- categoriesは既定の数だけ存在し、articlesは予め用意されたカテゴリーに所属するという形したいす。
27
+ categoriesは既定の数だけ存在し、articlesは予め用意されたカテゴリーに所属するという形でテストデータを作成したいと思っています。
28
+
29
+ 例えば、カテゴリーが["国内", "国際", "エンタメ", "IT", "速報"]の5つある場合、作成される記事はその5つのカテゴリーのどれかに属するという形にしたいです。
28
30
 
29
31
  articlesが作成される度にcategoriesが増えるということを防ぎたいと思っています。
30
32
 
@@ -36,13 +38,9 @@
36
38
 
37
39
 
38
40
 
39
- 後述するコードでテストデータを作成したところ、articleの数だけcategoryが作成され
41
+ 後述するコードでテストデータを作成したところ、articleの数だけcategoryが作成されました。
40
42
 
41
- ```
42
43
 
43
- エラーメッセージ
44
-
45
- ```
46
44
 
47
45
 
48
46
 
@@ -50,11 +48,125 @@
50
48
 
51
49
 
52
50
 
53
- ```ここに言語名を入力
51
+ モデル
54
52
 
55
- ソースコード
53
+ ```ruby
54
+
55
+ class Article < ApplicationRecord
56
+
57
+ has_many :article_categories
58
+
59
+ has_many :categories, through: :article_categories
60
+
61
+
62
+
63
+ validates :title, presence: true
64
+
65
+ end
66
+
67
+
68
+
69
+ class Category < ApplicationRecord
70
+
71
+ has_many :article_categories
72
+
73
+ has_many :articles, through: :article_categories
74
+
75
+ end
76
+
77
+
78
+
79
+ class ArticleCategory < ApplicationRecord
80
+
81
+ belongs_to :article
82
+
83
+ belongs_to :category
84
+
85
+ end
56
86
 
57
87
  ```
88
+
89
+
90
+
91
+ factory
92
+
93
+ ```ruby
94
+
95
+ FactoryBot.define do
96
+
97
+ factory :article do
98
+
99
+ title { 'タイトル' }
100
+
101
+ body { 'テキストテキストテキストテキストテキスト' }
102
+
103
+
104
+
105
+ after(:build) do |article|
106
+
107
+ category = create(:category)
108
+
109
+ article.article_categories << build(:article_category, article: article, category: category)
110
+
111
+ end
112
+
113
+ end
114
+
115
+ end
116
+
117
+
118
+
119
+ FactoryBot.define do
120
+
121
+ factory :category do
122
+
123
+ name { 'カテゴリー名' }
124
+
125
+ end
126
+
127
+ end
128
+
129
+
130
+
131
+ FactoryBot.define do
132
+
133
+ factory :article_category do
134
+
135
+ article
136
+
137
+ category
138
+
139
+ end
140
+
141
+ end
142
+
143
+ ```
144
+
145
+
146
+
147
+ テスト
148
+
149
+ ```ruby
150
+
151
+ context "記事の数をテストする" do
152
+
153
+ let!(:category){ create_list(:category, 5) }
154
+
155
+ let!(:article){ create_list(:article, 30) }
156
+
157
+ example "カテゴリーのレコード数を確認" do
158
+
159
+ expect(Category.all.count).to eq 5
160
+
161
+ end
162
+
163
+ end
164
+
165
+
166
+
167
+ ```
168
+
169
+
58
170
 
59
171
 
60
172
 
@@ -62,7 +174,9 @@
62
174
 
63
175
 
64
176
 
65
- ここに問題に対て試しことを載してください
177
+ 参照した記事です
178
+
179
+ https://qiita.com/takehanKosuke/items/ae324483e7f9451bf6a7
66
180
 
67
181
 
68
182
 
@@ -70,4 +184,10 @@
70
184
 
71
185
 
72
186
 
187
+ - Ruby 2.6.7
188
+
189
+ - Rails 6.1
190
+
191
+
192
+
73
- ここにり詳細な情報を記載ださい。
193
+ ご教示のほどしくお願します