不安定テストを生み出すCapybaraを調教する 2020/06/12 @銀座Rails #22 Masatoshi Iwasaki
不安定テストを生み出すCapybaraを調教する 2020/06/12 @銀座Rails #22 Masatoshi Iwasaki
The Ruby community is passionate about testing. We have plenty of testing libraries, there are hundreds of blog posts on the topic, we even had a dedicated podcast. Hell, the top 3 most downloaded gems are parts of the RSpec testing framework! Rails, I believe, is one of the reasons behind the rise of Ruby testing. The framework makes writing tests as enjoyable as possible. In most situations, fol
Rails 6.0の複数DBのレビューしてるときに気づいたことなんですけど、たぶんリードレプリカからデータを読むテストをするのたぶん大変だと思われます。 うちの業務のアプリでActive Recordが更新を検知できない方法でデータが更新されるとテストがコケるという問題が以前にあり、これと同じ構造の問題がマスターのコネクションで更新したときマスターのコネクションのクエリキャッシュはクリアされるけどリードレプリカのコネクションのクエリキャッシュは残ったままというのがあるよね、というのをテストコードで示そうと思ったときのことである。 github.com 通常RailsアプリでDBつかったテストをするとき、テストの中で変更されたデータを毎回初期状態に戻すのにフィクスチャーをロードし直すのは時間がかかって効率がわるいので、テストケースに入る前にトランザクションを開始しといてテストケース終わったら
We frequently think about how good it would be if we could run tests in parallel on local so there would be less wait time for tests to be completed. Wait times increase considerably when the count of tests are on the higher side, which is a common case for a lot of applications. Though CI tools like CircleCi and Travis CI provide a feature to run tests in parallel, there still wasn't a straightfo
Replace chromedriver-helper with webdrivers (a public service announcement) chromedriver-helper is no longer supported. If you try to install it or upgrade to a newer version, you’ll be greeted with this announcement: +--------------------------------------------------------------------+ | | | NOTICE: chromedriver-helper is deprecated after 2019-03-31. | | | | Please update to use the 'webdrivers'
Rails Developer Meetup 2019での発表資料です!可読性の高いテストコードを書くためのコツについて話しました
I’ve been a happy user of Capybara-WebKit for many years now, but its dependence on Qt can make it frustrating to install on macOS, particularly following macOS or Xcode updates. One such recent issue lead me to experiment with running my tests in Chrome via ChromeDriver and Selenium. I found the installation of ChromeDriver and Capybara-Selenium to be significantly faster than the installation of
こんにちは。みんなのウェディングのエンジニアの@1syoです。 みんなのウェディング Advent Calendar 2017 - Qiita 18日目の記事です。 Ruby on Rails のスローテスト対策としてやってみて、効果がなかったものとあったものをご紹介しようと思います。 効果がなかった springを利用する .circleci/config.yml - run: command: bin/spring server background: true - run: bin/spring rspec $(circleci tests glob "spec/** ... - run: bin/spring rspec $(circleci tests glob "spec/** ... このように spring server を起動してから spring 経由で RSpec を
be rake db:migrate RAILS_ENV=developmentが以下エラーを吐いてこけるので原因を調査。 ActiveRecord::StatementInvalid: Mysql2::Error: Table 'polaris_db2.leveled_experiences' doesn't exist: SHOW FULL FIELDS FROM `leveled_experiences` workaround 取り敢えずdevelopmentからfactory_girl_railsのgemを外すだけでdb:migrateは通るようになった 根本原因は? この回答を引用すると、{}でくくり遅延評価属性を利用しないといけないものがあったみたい、もう少し基礎知識つけないとなぁ
CTO兼福岡オフィス立ち上げ担当として新アプリを作っている@edvakfです。 JSON APIを開発しているとこういう問題がありがちですよね。 仕様どおりにAPIの形式を作ったはずだけどなんか自信が持てない テストでいくつかのキーが存在するかの簡単なチェックはしてるつもりだけど、全部チェックするのは大変すぎる APIのControllerやViewをリファクタリングしたらレスポンスの形が変わってアプリがめっちゃクラッシュし始めた というのが怖くて誰もリファクタリングできなくなった APIドキュメントがメンテされない 知らない間にレスポンスのフィールドが増えてたけどドキュメントに書いてない これらを解決したい!と思って試行錯誤したら、スマートに解決することができました。この記事ではRailsのことについて書きますが、考え方は他の言語・フレームワークでも同じです。 なお、今回使ったgemのバ
When you need to test Rake tasks for a Rails app, its convenient to be able to write short, snappy specs like so: # File: spec/tasks/send_invoices_spec.rb require "rails_helper" describe "rake billing:send_invoices", type: :task do it "preloads the Rails environment" do expect(task.prerequisites).to include "environment" end it "runs gracefully with no subscribers" do expect { task.execute }.not_t
はじめに 先日、RSpec 3.7がリリースされました。 参考: RSpec 3.7 has been released! 上記ブログの中で「今回のリリースはRailsのSystem Testの統合機能をいち早く使ってもらうためのリリースだ」と書いてあります。 実際、ブログの中で触れられている新機能は「System Spec」機能の追加だけです。 というわけで、この記事はrspec-rails 3.7で導入されたSystem Specの紹介と使い方の説明をしていきます。 実行環境 この記事は以下のバージョンを対象にして書かれています。 rspec-rails 3.7.1 Rails 5.1.4 Ruby 2.4.2 selenium-webdriver 3.6.0 Capybara 2.15.4 Chrome 62 ChromeDriver 2.33 サンプルコード この記事で使用したコー
FactoryBot’s traits are an outstanding way to DRY up your tests and factories by naming groups of attributes, callbacks, and associations in one concise area. Imagine defining factories but without the attributes backed by a specific object. Here’s a basic example of a factory with two traits: FactoryBot.define do factory :todo_item do name { 'Pick up a gallon of milk' } trait :completed do comple
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く