Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Simple one-liner tests for common Rails functionality
| Date | Stars |
|---|---|
| 2026-07-24 | 3583 |
| 2026-07-25 | 3583 |
| 2026-07-28 | 3583 |
| 2026-07-30 | 3583 |
| 2026-08-06 | 3583 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
15.0
growth rate 0.00%/day
# Shoulda Matchers [![Gem Version][version-badge]][rubygems] [![Build Status][github-actions-badge]][github-actions] [![Total Downloads][downloads-total]][rubygems] [![Downloads][downloads-badge]][rubygems]
[version-badge]: https://img.shields.io/gem/v/shoulda-matchers.svg
[rubygems]: https://rubygems.org/gems/shoulda-matchers
[github-actions-badge]: https://img.shields.io/github/actions/workflow/status/thoughtbot/shoulda-matchers/ci.yml?branch=main
[github-actions]: https://github.com/thoughtbot/shoulda-matchers/actions
[downloads-total]: https://img.shields.io/gem/dt/shoulda-matchers.svg
[downloads-badge]: https://img.shields.io/gem/dtv/shoulda-matchers.svg
[downloads-badge]: https://img.shields.io/gem/dtv/shoulda-matchers.svg
[![shoulda-matchers][logo]][website]
[logo]: https://matchers.shoulda.io/images/shoulda-matchers-logo.png
[website]: https://matchers.shoulda.io/
Shoulda Matchers provides RSpec and Minitest-compatible one-liners to test
common Rails functionality that, if written by hand, would be much longer, more
complex, and error-prone.
## Quick links
📖 **[Read the documentation for the latest version][rubydocs].**
📢 **[See what's changed in recent versions][changelog].**
[rubydocs]: https://matchers.shoulda.io/docs
[changelog]: CHANGELOG.md
## Table of contents
- [Getting started](#getting-started)
- [RSpec](#rspec)
- [Rails apps](#rails-apps)
- [Non-Rails apps](#non-rails-apps)
- [Minitest](#minitest)
- [Rails apps](#rails-apps-1)
- [Non-Rails apps](#non-rails-apps-1)
- [Usage](#usage)
- [On the subject of `subject`](#on-the-subject-of-subject)
- [Availability of RSpec matchers in example groups](#availability-of-rspec-matchers-in-example-groups)
- [Rails projects](#rails-projects)
- [Non-Rails projects](#non-rails-projects)
- [`should` vs `is_expected.to`](#should-vs-is_expectedto)
- [A Note on Testing Style](#a-note-on-testing-style)
- [Matchers](#matchers)
- [ActiveModel matchers](#activemodel-matchers)
- [ActiveRecord matchers](#activerecord-matchers)
- [ActionController matchers](#actioncontroller-matchers)
- [Routing matchers](#routing-matchers)
- [Independent matchers](#independent-matchers)
- [Extensions](#extensions)
- [Contributing](#contributing)
- [Compatibility](#compatibility)
- [Versioning](#versioning)
- [Team](#team)
- [Copyright/License](#copyrightlicense)
- [About thoughtbot](#about-thoughtbot)
## Getting started
### RSpec
Start by including `shoulda-matchers` in your Gemfile:
```ruby
group :test do
gem 'shoulda-matchers', '~> 8.0'
end
```
Then run `bundle install`.
Now you need to configure the gem by telling it:
- which matchers you want to use in your tests
- that you're using RSpec so that it can make those matchers available in
your example groups
#### Rails apps
If you're working on a Rails app, simply place this at the bottom of
`spec/rails_helper.rb` (or in a support file if you so choose):
```ruby
Shoulda::Matchers.configure do |config|
config.integrate do |with|
with.test_framework :rspec
with.library :rails
end
end
```
#### Non-Rails apps
If you're not working on a Rails app, but you still make use of ActiveRecord or
ActiveModel in your project, you can still use this gem too! In that case,
you'll want to place the following configuration at the bottom of
`spec/spec_helper.rb`:
```ruby
Shoulda::Matchers.configure do |config|
config.integrate do |with|
with.test_framework :rspec
# Keep as many of these lines as are necessary:
with.library :active_record
with.library :active_model
end
end
```
### Minitest
If you're using our umbrella gem [Shoulda], then make sure that you're using the
latest version:
```ruby
group :test do
gem 'shoulda', '~> 4.0'
end
```
[Shoulda]: https://github.com/thoughtbot/shoulda
Otherwise, add `shoulda-matchers` to your Gemfile:
```ruby
group :test do
gem 'shoulda-matchers', '~> 8.0'
end
```
Then run `bundle install`.
Now you need to configure tExcerpt of 21,789 characters
Read on GitHubElliot Winkler · @MetaMask · Colombia
592
Joe Ferris · Morocco
152
79
Pedro Paiva · Local Labs
77
Matheus Sales
60
Melissa Xie · @github · Morocco
35
Mike Burns
34
Prem Sichanugrist · @komoju · Japan
32
31
28
Matt Jankowski · TCUWP
26
Kapil Sachdev
18
Josh Clayton · @happy-co · Morocco
16
Gui Vieira · Shopify · Canada
13
11
Josh Nichols · @Gusto · United States
10
9
9
9
9
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:db3bdd7572b1aa33, topic:testing