Test :: Unitテスト用のRSpecのshared_examplesに似たプラグイン/拡張機能がありますか?Ruby Test :: Unitの動作のようなRSpecの共有の例を取得するにはどうすればよいですか?
5
A
答えて
0
Test::Unit
テストは単なるRubyクラスなので、ほかのRubyクラスと同じコード再利用方法を使用できます。
共有サンプルを書き込むには、モジュールを使用できます。定義とテスト::ユニットテスト共有テストを使用する
module SharedTests
def shared_test_for(test_name, &block)
@@shared_tests ||= {}
@@shared_tests[test_name] = block
end
def shared_test(test_name, scenario, *args)
define_method "test_#{test_name}_for_#{scenario}" do
instance_exec *args, &@@shared_tests[test_name]
end
end
end
:
module SharedExamplesForAThing
def test_a_thing_does_something
...
end
end
class ThingTest < Test::Unit::TestCase
include SharedExamplesForAThing
end
2
私は、次のコードを使用して、(RSpecのは、例を共有するために同様の)共有のテストを実施することができました
class BookTest < ActiveSupport::TestCase
extend SharedTests
shared_test_for "validate_presence" do |attr_name|
assert_false Books.new(valid_attrs.merge(attr_name => nil)).valid?
end
shared_test "validate_presence", 'foo', :foo
shared_test "validate_presence", 'bar', :bar
end
0
require 'minitest/unit'
require 'minitest/spec'
require 'minitest/autorun'
#shared tests in proc/lambda/->
basics = -> do
describe 'other tests' do
#override variables if necessary
before do
@var = false
@var3 = true
end
it 'should still make sense' do
@var.must_equal false
@var2.must_equal true
@var3.must_equal true
end
end
end
describe 'my tests' do
before do
@var = true
@var2 = true
end
it "should make sense" do
@var.must_equal true
@var2.must_equal true
end
#call shared tests here
basics.call
end
0
私は数年前に書いたこの要点を見てください。それはまだ素晴らしい作品:https://gist.github.com/jodosha/1560208このように使用
# adapter_test.rb
require 'test_helper'
shared_examples_for 'An Adapter' do
describe '#read' do
# ...
end
end
:
# memory_test.rb
require 'test_helper'
describe Memory do
it_behaves_like 'An Adapter'
end
2
あなたがConcern
を使用して、レール(または単にactive_support)を使用している場合。
require 'active_support/concern'
module SharedTests
extend ActiveSupport::Concern
included do
# This way, test name can be a string :)
test 'banana banana banana' do
assert true
end
end
end
active_supportを使用していない場合は、Module#class_eval
を使用してください。
この技術は、彼がいることを指摘しAndy H.の答え、上に構築:あなたは、コードの再利用[通常の技術を]使用できるように
テスト::ユニットテストは、ちょうどRubyのクラスである
ですが、ActiveSupport::Testing::Declarative#test
の使用が可能になるため、アンダースコアキーが消えないという利点があります。
関連する問題
- 1. Guard + spork + Rspecの問題 - Test :: Unitへのフックを削除するにはどうすればいいですか?
- 2. Windows 7でTest-NetConnectionなどのPowerShell 4コマンドレットを取得するにはどうすればよいですか?
- 3. このホバー効果を共有しないようにするにはどうすればよいですか?
- 4. チーム全体でReSharper Unit Testセッションを共有するにはどうしたらいいですか?
- 5. プロパティがウィジェット間で共有されないようにするにはどうすればよいですか?
- 6. スタックオーバーフローのようなきれいなURLを取得するにはどうすればよいですか?
- 7. どのようにGNUスクリーン共有を作成するには?
- 8. Facebookのグラフ、共有ビデオの長さのような情報をどのように取得できますか?
- 9. Twitterの共有ボタンのURLを動的コンテンツで更新するにはどうすればよいですか?
- 10. Rubyの列挙可能なオブジェクトのクラスを取得するにはどうすればよいですか?
- 11. rspecのスタブ:: Rails.rootはどうすればよいですか?
- 12. MVC3のネットワーク共有上のファイルへのリンクを作成するにはどうすればよいですか?
- 13. RSpecはどのようにRailsで動作しますか?
- 14. ブロック内のスレッド間で共通の値を共有するにはどうすればよいですか?
- 15. Test :: Unitでhttpリクエストをグローバルにスタブするにはどうすればいいですか?
- 16. Pythonのunittestに例外をキャッチしないようにするにはどうすればよいですか?
- 17. Stackoverflow/Stackexchangeのようなタグホバーのツールチップを取得するにはどうすればよいですか?
- 18. RubyのTest :: Unitでメソッドをテストするにはどうしたらいいですか?
- 19. Eclipseで「CTRL + BACK_ARROW」の古い動作を取得するにはどうすればよいですか?
- 20. Google Fit APIから有効なカロリーのみを取得するにはどうすればよいですか?
- 21. 複数のドメイン間で共有ログインサービスを作成するにはどうすればよいですか?
- 22. リンクリストに2つのセットの共通要素を取得するにはどうすればよいですか?
- 23. mutexの所有権を共有からアップグレードにアップグレードするにはどうすればよいですか?
- 24. iframeの異なるページへのリンクを共有するにはどうすればよいですか?
- 25. 私はどのようにショットガンでシナトラで動作するようにルビーデバッガを取得するのですか?
- 26. rspecでauthlogicをテストするにはどうすればよいですか?
- 27. Test :: UnitはRSpecと同等でなければなりませんshould_receive
- 28. Ruby on rails:application.html.erbのdatabseから値を取得するにはどうすればよいですか? beforeRenderのようなものはありますか?
- 29. CreateProcessAsUserの有効なユーザートークンを取得するにはどうすればよいですか?
- 30. gmail、yahooメールなどで動作するようにChrome拡張機能のホットキーを取得するにはどうすればよいですか?