Shoulda helps you write more understandable, maintainable Rails-specific tests under Minitest and Test::Unit.
📢 See what's changed in recent versions.
As an umbrella gem, the shoulda gem doesn't contain any code of its own but
rather brings in behavior from two other gems:
For instance:
require "test_helper"
class UserTest < ActiveSupport::TestCase
context "associations" do
should have_many(:posts)
end
context "validations" do
should validate_presence_of(:email)
should allow_value("user@example.com").for(:email)
should_not allow_value("not-an-email").for(:email)
end
context "#name" do
should "consist of first and last name" do
user = User.new(first_name: "John", last_name: "Smith")
assert_equal "John Smith", user.name
end
end
endHere, the context and should methods come from Shoulda Context; matchers
(e.g. have_many, allow_value) come from Shoulda Matchers.
See the READMEs for these projects for more information.
Shoulda is tested and supported against Ruby 3.0+, Rails 6.1+, RSpec 3.x, Minitest 4.x, and Test::Unit 3.x.
- For Ruby < 3 and Rails < 6.1 compatibility, please use v4.0.0.
Shoulda follows Semantic Versioning 2.0 as defined at http://semver.org.
Shoulda is currently maintained by Pedro Paiva. Previous maintainers include Elliot Winkler, Jason Draper, Gabe Berke-Williams, Ryan McGeary, Joe Ferris, Dan Croaky, and Tammer Saleh.
Shoulda is copyright © Tammer Saleh and thoughtbot, inc. It is free and opensource software and may be redistributed under the terms specified in the LICENSE file.