rspec-timecop alternatives and similar gems
Based on the "Testing" category.
Alternatively, view rspec-timecop alternatives based on common mentions on social networks and blogs.
-
Selenium WebDriver
A browser automation framework and ecosystem. -
faker
A library for generating fake data such as names, addresses, and phone numbers. -
factory_bot
A library for setting up Ruby objects as test data. -
vcr
Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests. -
WebMock
Library for stubbing and setting expectations on HTTP requests in Ruby. -
Cucumber
A home for issues that are common to multiple cucumber repositories -
shoulda-matchers
Simple one-liner tests for common Rails functionality -
minitest
minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking. -
Parallel Tests
Ruby: 2 CPUs = 2x Testing Speed for RSpec, Test::Unit and Cucumber -
timecop
A gem providing "time travel", "time freezing", and "time acceleration" capabilities, making it simple to test time-dependent code. It provides a unified method to mock Time.now, Date.today, and DateTime.now in a single call. -
capybara-webkit
A Capybara driver for headless WebKit to test JavaScript web apps -
mutant
Automated code reviews via mutation testing - semantic code coverage. -
DuckRails
Development tool to mock API endpoints quickly and easily (docker image available) -
Ruby Tests Profiling Toolbox
Ruby Tests Profiling Toolbox -
Spork
A DRb server for testing frameworks (RSpec / Cucumber currently) that forks before each run to ensure a clean testing state. -
Aruba
Test command-line applications with Cucumber-Ruby, RSpec or Minitest. -
Appraisal
A Ruby library for testing your library against different versions of dependencies. -
Konacha
Test your Rails application's JavaScript with the mocha test framework and chai assertion library -
Phony
E164 international phone number normalizing, splitting, formatting. -
Fabrication
This project has moved to GitLab! Please check there for the latest updates. -
API Taster
A quick and easy way to visually test your Rails application's API. -
Knapsack
Knapsack splits tests evenly across parallel CI nodes to run fast CI build and save you time. -
ActiveMocker
Generate mocks from ActiveRecord models for unit tests that run fast because they don’t need to load Rails or a database. -
Wrong
Wrong provides a general assert method that takes a predicate block. Assertion failure messages are rich in detail. -
RR
RR is a test double framework that features a rich selection of double techniques and a terse syntax. ⛺ -
FactoryTrace
Simple tool to maintain factories and traits from FactoryBot -
Pundit Matchers
A set of RSpec matchers for testing Pundit authorisation policies. -
Flatware
A parallel test runner for RSpec and Cucumber with pretty output -
Drawers
Group related classes together. No more silos. A solution to rails dystopia. -
RSpecTracer
RSpec Tracer is a specs dependency analyzer, flaky tests detector, tests accelerator, and coverage reporter tool for RSpec. It maintains a list of files for each test, enabling itself to skip tests in the subsequent runs if none of the dependent files are changed. It uses Ruby's built-in coverage library to keep track of the coverage for each test.
Static code analysis for 29 languages.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of rspec-timecop or a related project?
README
RSpec::Timecop
RSpec extension for controlling time within examples, using the timecop gem.
Installation
Add this line to your application's Gemfile:
gem 'rspec-timecop'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install rspec-timecop
Usage
In a RSpec example you can use the timecopped method to freeze time for the subject of the example:
class Foobar
def self.hi
OtherObject.time_check(Time.now)
'hi'
end
end
describe Foobar do
let(:now) { Time.now }
before do
expect(OtherObject).to receive(:time_check)
.with(now)
end
describe 'without the helper' do
subject do
result = nil
Timecop.freeze(now) { result = Foobar.hi }
result
end
it { should eq('hi') }
end
describe 'with the helper' do
subject { timecopped(now) { Foobar.hi } }
it { should eq('hi') }
end
end
Without Timecop.freeze the value for Time.now being passed into ObjectOther#time_check could not be consistently checked. And using #timecopped hides away example how Timecop.freeze is used so that we can see the subject call more clearly.
Related
Elsewhere on the web
Links to other places on the web where this projects exists:
Similar Projects
- timecop-rspec, similar ideas but a different implementation
Contributing
- Fork it ( https://github.com/sugarcrm/rspec-timecop/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
License
Copyright 2015 SugarCRM Inc., released under the MIT License.
*Note that all licence references and agreements mentioned in the rspec-timecop README section above
are relevant to that project's source code only.