You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
スタブとモックの違い オブジェクト指向設計実践入門を読んで学んだことのまとめです。 具体的にRspecでモックを書くときはこうしましょう、といった具体的な話ではなく言葉の意味の説明がメインです。 ソフトウェアテストの対象 スタブもモックもテストコード内で使うものです。違いを考える前に、テストについて振り返ってみます。 テストを行うべきなのは、次の2つについてです。 オブジェクトがほかのオブジェクトからメッセージを受け取ったとき、期待する答えを返すことができるか 要するにパブリックメソッドに対するユニットテスト 「オブジェクト指向設計実践ガイド」には、プライベートメソッドに対するテストは書くべきではない、さらにいうとプライベートメソッドを書くべきではない(プライベートメソッドを他のオブジェクトに切り出して注入せよ)とあります。 オブジェクトが副作用のあるメッセージ送信を行うとき、その回数や引
概要 RailsのModelは、通常DBと結びついていないと使えないが、 データソースをDBではなく外部APIなどに変更し、 validation機能はそのまま使いたい。 ActiveModel::ModelをMixInしてvalidation機能を有効にし、 callbackでvalidateすることで実現する。 環境 rails 5.0.0.1 ruby 2.3.1 ソースコード例 ActiveModel::ModelをMixIn これで通常のModelと同様にvalidate機能を利用できる。 自作validationも使えるようになる。 class Sample # MixIn include ActiveModel::Model attr_accessor :name, :email, :age # before_saveを使うための記述 define_model_callbac
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに RSpecは難しい、よくわからない、といったコメントをときどき見かけます。 確かにちょっと独特な構文を持っていますし、機能も結構多いので「難しそう」と感じてしまう気持ちもわかります。 (構文については僕も最初見たときに「うげっ、なんか気持ちわるっ」と思った記憶がありますw) しかし、RSpecに限らずどんなフレームワークでも同じですが、慣れてしまえばスラスラ書けますし、実際僕自身は「RSpecって便利だな-」と思いながらテストコードを書いています。 そこでこの記事では、僕が考える「最低限ここだけを押さえていれば大丈夫!!」なR
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Small steps to DRYer RSpec 原文公開日: 2017/01/22 著者: Victor Shepelev-- ウクライナ在住のRubyプログラマーで、SciRubyのメンテナーとメンターでもあります。 2017/11/29: 初版公開 2023/07/11: 更新 🔗 これは何? RSpec APIは可能な限りDRYで読みやすいDSLへと絶え間なく進化し続けています。しかし、specをさらにDRYにできる方法(トリックや追加メソッドなど)はまだまだあるのです。 警告: 本記事を読んで「この方法を使うより先に、テストしやすいコードを書けるように設計を見直す方がいいのでは?」と言いたくてたまらなくなるかもしれませんが、そうした方法は既に知られているとお考えください。 更新情報(2017/08/15): sah
はじめに 僕は折に触れて「RSpecではなるべくsubjectを使わない方がいい」という発言をしています。 Qiitaとか見てるとRSpecのsubjectを愛用している人が多そうな印象なんだけど、僕はほとんど使っていません。「subjectは原則使わない。明らかにメリットがあるときにだけ例外的に使用する」が僕のポリシーです。ほら、RSpecの(元)メンテナさんもそう言ってるし。 https://t.co/Rp5EiIxCVb #Qiita pic.twitter.com/pMlN35ihEG— Junichi Ito (伊藤淳一) (@jnchito) 2019年5月28日 そもそもの話として、RSpecではsubjectは無理に使わない、というのが僕の持論です。なぜなら無理にを使うと、いびつなテストコードができやすいから。基本はsubjectなしで書く。明らかにsubjectが有効なと
複数のテストケースで共通する処理を別メソッドに置きたい場合、以下のようにヘルパーメソッドを定義する事ができる。 describe “a test group” do def my_helper_method :available end it “has access to methods defined in its group” do expect(my_helper_method).to be(:available) end end メソッドのスコープはグループ内 子グループは親グループのメソッドを使用できるが、親は子のメソッドを参照できない。 参照: https://www.relishapp.com/rspec/rspec-core/docs/helper-methods/arbitrary-helper-methods 他にも module にhelperメソッドを定義する方法も
前回、IntegrationテストをTurnipで導入すると良いという話をしましたが、それ以前は長い間Seleniumを利用してE2Eテストを行ってきました。Seleniumは実際にブラウザを自動的に操作して評価するわけですからユーザー視点での評価としてはこれ以上ありません。しかし、実際に運用してみると迅速にリリースを進めたいという思惑から遠のいていくケースも少なくありません。 現在Ruby on RailsでのWebアプリケーションを運用中ですが、テスト手法は受け入れテストも兼ねる機能テストをCucumber + Capybara + rack_testにて、単体テストをRSpecでリリースフローを回しています。今まで自分が構築してきたWebアプリケーションのテストについて振りかえってみて、どうしてこうなったという辺りを紹介してみたいと思います。 衝撃的だったSelenium 自分がSe
アメリカ人です。 Hello 👋 この記事の目的 多くの日本人は自分の英語力には自信がないではないでしょうか。残念ながら「英語がわからん」、「英語が全然できない」という声をしょっちゅう聞いています。でも、今まで英語ができて意味がちゃんと伝わる何人かの日本人に会ったがあります。完璧な英語ではないけど(外国人も英語でミスる時もある...)、がんばって話そうとするので充分仕事ができる人たち。そういうがんばる姿勢はオープンソースのプログラムや英語圏のプログラムに手を出すためには一番大事なことだと思います(外国人側もすごく助かります)。日本の文化では「私はできる!」と自慢することは少ない中、この記事を通して、流暢に話せなくても自分のプログラミングの命名の仕方にはちょっとだけでも自信を持たせたいなと思います。完璧じゃなくていいです。Let's go! 合わせて読んでいただきたい 【日本人エンジニア必
はじめに RSpecを用いたコントローラーのテストは、 テストケース設計 > テストデータ作成 > テストロジック作成 > リファクタリング という順番で書きます。 この記事では、プロセス順にそれぞれの要点を述べますが、 特に、テストケース設計、テストデータ作成のコツ、よく使うリファクタリングについて重きを置きます。 以上の3つができるようになれば、テストに対する苦手意識はなくなるでしょう。 また、テストデータ作成はFactoryGirlを用いるが、最低限の使い方はここでは割愛します。 本文 1.テストケース設計 ◯書くべきテストケース コントローラー書くべきテストケースは基本的に5項目です。 正常に動作しているか (http status) 正常にHTTPメソッドを呼び出せているか (render template) インスタンス変数が適切かどうか (assings) モデルの増減 (c
継続的インテグレーションの手順のうち、デプロイに焦点を当てて、テストの実行から、GitによるHeroku環境へのデプロイまでを自動化する方法を解説。Mac向けのGrowlを使って実行結果を通知する方法も説明。 ← 前回 連載 INDEX 次回 → 連載第1回「Jenkinsを使ってみよう」ではMac(OS X)/Linux/Windowsへのインストール方法を、第2回「Jenkinsでテストを実行してみよう」ではユニットテストおよびインテグレーションテストを作成し、Jenkinsから実行する手法を解説した。ここまで読んでいただいた読者の皆さんもJenkinsをインストールして自分なりの使い方を模索していることと思う。 さて、連載第1回で「継続的インテグレーションとは次のような手順の繰り返しだ」と説明したのを覚えているだろうか? プログラミング テストの実行 リファクタリング デプロイ 今回
Jenkinsを使って小さなテストを自動実行して、開発スピードを飛躍的に向上させよう。また、MacでのRuby/Rails環境の構築方法から、テストフレームワーク「RSpec」とインテグレーションテスト環境「Turnip」を使ったテストの書き方までを解説する。 ← 前回 連載 INDEX 次回 → 前回の記事を読んでJenkinsの環境を構築することはできただろうか? 今回は簡単なサンプルアプリケーションの作成を行ってみようと思う。同時に、Rubyの標準的なテストフレームワークのRSpecと、インテグレーションテスト環境であるTurnipを使ったテストの書き方を解説する。作成したテストを、Jenkinsを使って自動実行できるようになれば、あなたの開発スピードは飛躍的に向上することだろう。 Railsの開発環境を構築しよう 2013年10月にリリースされたMac OS X 10.9(通称Ma
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く