質問編集履歴

3

情報の追加

2021/04/19 05:43

投稿

divclass123
divclass123

スコア35

test CHANGED
File without changes
test CHANGED
@@ -551,3 +551,43 @@
551
551
 
552
552
 
553
553
  binding.pryを用いて色々やったのですが、なんか効果的なデバッグ方法があればご教授いただけると幸いです。
554
+
555
+
556
+
557
+
558
+
559
+ **spec/system/drinks_spec.rb**
560
+
561
+
562
+
563
+ ```ruby
564
+
565
+ let!(:user) { FactoryBot.create(:user) }
566
+
567
+ let(:drink) { FactoryBot.create(:drink) }
568
+
569
+ let!(:other_user) { FactoryBot.create(:user) }
570
+
571
+ let(:other_drink) { FactoryBot.create(:drink) }
572
+
573
+
574
+
575
+ ```
576
+
577
+
578
+
579
+ で、
580
+
581
+
582
+
583
+ ```
584
+
585
+ let(:other_drink) { FactoryBot.create(:drink) }
586
+
587
+ ```
588
+
589
+
590
+
591
+ があることで、テストがパスできないと思いコメントアウトしても、同じエラーが起こってしまいます。
592
+
593
+ 削除する。のリンクをクリックするテストはパスできてるはずなので、なぜこのようなエラーが起こってしまうのか分かりません。

2

情報の追加

2021/04/19 05:43

投稿

divclass123
divclass123

スコア35

test CHANGED
File without changes
test CHANGED
@@ -8,6 +8,10 @@
8
8
 
9
9
 
10
10
 
11
+ **docker上で開発していて、クロムをインストールしました**
12
+
13
+
14
+
11
15
  ### 発生している問題・エラーメッセージ
12
16
 
13
17
 
@@ -266,6 +270,180 @@
266
270
 
267
271
 
268
272
 
273
+ **docker-compose.yml**
274
+
275
+
276
+
277
+ ```yml
278
+
279
+ web:
280
+
281
+ enviroment:
282
+
283
+ SELENIUM_DRIVER_URL: http://selenium_chrome:4444/wd/hub"
284
+
285
+ selenium_chrome:
286
+
287
+ image: selenium/standalone-chrome-debug
288
+
289
+ logging:
290
+
291
+ driver: none
292
+
293
+ ```
294
+
295
+
296
+
297
+
298
+
299
+ **Dockerfile**
300
+
301
+
302
+
303
+ ```
304
+
305
+ # chromeの追加
306
+
307
+ RUN apt-get update && apt-get install -y unzip && \
308
+
309
+ CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` && \
310
+
311
+ wget -N http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip -P ~/ && \
312
+
313
+ unzip ~/chromedriver_linux64.zip -d ~/ && \
314
+
315
+ rm ~/chromedriver_linux64.zip && \
316
+
317
+ chown root:root ~/chromedriver && \
318
+
319
+ chmod 755 ~/chromedriver && \
320
+
321
+ mv ~/chromedriver /usr/bin/chromedriver && \
322
+
323
+ sh -c 'wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' && \
324
+
325
+ sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' && \
326
+
327
+ apt-get update && apt-get install -y google-chrome-stable
328
+
329
+ ```
330
+
331
+
332
+
333
+ **spec/support/selenium_chrome.rb**
334
+
335
+
336
+
337
+ ```
338
+
339
+ require 'capybara/rspec'
340
+
341
+ require 'selenium-webdriver'
342
+
343
+
344
+
345
+ Capybara.register_driver :selenium_chrome_headless do |app|
346
+
347
+ options = ::Selenium::WebDriver::Chrome::Options.new
348
+
349
+
350
+
351
+
352
+
353
+ options.add_argument('--headless')
354
+
355
+ options.add_argument('--no-sandbox')
356
+
357
+ options.add_argument('--disable-dev-shm-usage')
358
+
359
+ options.add_argument('--window-size=1400,1400')
360
+
361
+
362
+
363
+
364
+
365
+ driver = Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
366
+
367
+ end
368
+
369
+
370
+
371
+ Capybara.javascript_driver = :selenium_chrome_headless
372
+
373
+ ```
374
+
375
+
376
+
377
+ **spec/support/capybara.rb**
378
+
379
+
380
+
381
+ ```
382
+
383
+ Capybara.register_driver :chrome_headless do |app|
384
+
385
+ options = ::Selenium::WebDriver::Chrome::Options.new
386
+
387
+
388
+
389
+ options.add_argument('--headless')
390
+
391
+ options.add_argument('--no-sandbox')
392
+
393
+ options.add_argument('--disable-dev-shm-usage')
394
+
395
+ options.add_argument('--window-size=1400,1400')
396
+
397
+
398
+
399
+ Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
400
+
401
+ end
402
+
403
+
404
+
405
+ Capybara.javascript_driver = :chrome_headless
406
+
407
+
408
+
409
+ RSpec.configure do |config|
410
+
411
+ config.before(:each, type: :system) do
412
+
413
+ driven_by :rack_test
414
+
415
+ end
416
+
417
+
418
+
419
+ config.before(:each, type: :system, js: true) do
420
+
421
+ if ENV["SELENIUM_DRIVER_URL"].present?
422
+
423
+ driven_by :selenium, using: :chrome, options: {
424
+
425
+ browser: :remote,
426
+
427
+ url: ENV.fetch("SELENIUM_DRIVER_URL"),
428
+
429
+ desired_capabilities: :chrome
430
+
431
+ }
432
+
433
+ else
434
+
435
+ driven_by :selenium_chrome_headless
436
+
437
+ end
438
+
439
+ end
440
+
441
+ end
442
+
443
+ ```
444
+
445
+
446
+
269
447
 
270
448
 
271
449
  ### 試したこと

1

情報の追加

2021/04/16 04:29

投稿

divclass123
divclass123

スコア35

test CHANGED
File without changes
test CHANGED
@@ -292,4 +292,84 @@
292
292
 
293
293
 
294
294
 
295
+ ```
296
+
297
+ context '削除できるとき' do
298
+
299
+ it "投稿した本人ならその投稿を削除できる" do
300
+
301
+
302
+
303
+ visit login_path
304
+
305
+ fill_in 'email', with: drink.user.email
306
+
307
+ fill_in 'password', with: drink.user.password
308
+
309
+ find('input[name="commit"]').click
310
+
311
+ expect(current_path).to eq(user_path(drink.user))
312
+
313
+
314
+
315
+ # 投稿詳細ページに移動
316
+
317
+ visit drink_path(drink)
318
+
319
+ # 削除のリンクがある
320
+
321
+ expect(page).to have_link '削除する', href: drink_path(drink)
322
+
323
+ # 削除したら、Drinkモデルのカウントが1減る
324
+
325
+ expect{
326
+
327
+ find_link('削除する', href: drink_path(drink)).click
328
+
329
+ }.to change { Drink.count }.by(-1)
330
+
331
+ # トップページに遷移される
332
+
333
+ visit root_path
334
+
335
+ # 削除した投稿はない
336
+
337
+ expect(page).to have_no_content(drink.image)
338
+
339
+ expect(page).to have_content("TOKYOロースト")
340
+
341
+ expect(page).to have_content("#{drink.price}")
342
+
343
+ expect(page).to have_content("#{drink.explain}")
344
+
345
+ end
346
+
347
+ end
348
+
349
+ ```
350
+
351
+
352
+
353
+ このようなテストだと通りました。
354
+
355
+ 画像は削除された?のですが、 expect(page).to have_link '削除する', href: drink_path(drink)
356
+
357
+ が機能してない?
358
+
359
+
360
+
361
+ でも expect{
362
+
363
+ find_link('削除する', href: drink_path(drink)).click
364
+
365
+ }.to change { Drink.count }.by(-1)
366
+
367
+
368
+
369
+ がパスできてる?
370
+
371
+
372
+
373
+
374
+
295
375
  binding.pryを用いて色々やったのですが、なんか効果的なデバッグ方法があればご教授いただけると幸いです。