https://github.com/pfac/webtrap
Trap for catching outgoing HTTP requests.
https://github.com/pfac/webtrap
rspec ruby testing
Last synced: 5 months ago
JSON representation
Trap for catching outgoing HTTP requests.
- Host: GitHub
- URL: https://github.com/pfac/webtrap
- Owner: pfac
- License: mit
- Created: 2017-01-24T23:35:25.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-12-21T11:22:55.000Z (over 8 years ago)
- Last Synced: 2025-12-06T13:17:30.710Z (7 months ago)
- Topics: rspec, ruby, testing
- Language: Ruby
- Homepage:
- Size: 44.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
README
WebTrap
=======
[](https://badge.fury.io/rb/webtrap)
[](https://travis-ci.org/pfac/webtrap)
[](https://gemnasium.com/github.com/pfac/webtrap)
[](https://codeclimate.com/github/pfac/webtrap)
Documentation:
[](http://www.relishapp.com/pfac/webtrap/docs)
[](http://www.rubydoc.info/gems/webtrap)
[](https://inch-ci.org/github/pfac/webtrap)
WebTrap allows you to write tests that assert on outgoing requests. This allows
you to verify that such requests match the documentation of external services
without actually having to hit them.
## Install
To install this library, just run the following command on your shell:
```sh
#!/bin/sh
gem install webtrap
```
Or, if you're using [Bundler][bundler], add the following to your project's
`Gemfile`:
```ruby
# Gemfile
gem "webtrap", group: :test
```
## Usage
WebTrap consists on a set of matchers that given a block where an HTTP request
is sent provide the ability to assert over on the outgoing request.
### Configuration
In order to use WebTrap matchers, make sure you require the correct file into
your configuration:
#### RSpec
```ruby
require "webtrap/rspec"
```
Include this line in the specs where you wish to use these matchers. If you
prefer to make WebTrap matchers available to all specs add this line to
`specs/spec_helper.rb`, or, if you are using `rspec-rails`, add it to
`specs/support/webtrap.rb`.
### Examples
* Verify that a request is sent anywhere:
```ruby
expect do
# ...
end.to send_request
```
* Verify that a request is send with a specific XML body (or [equivalent][equivalent-xml]):
```ruby
expect do
# ...
end.to send_request.with_xml(xml)
```
## Contributing
If you find a problem, have an idea or a suggestion, but don't know how to
implement it, or if you simply have a question regarding this project,
[please create an issue on GitHub][github-issue]. Your issue will be reviewed by
one of the main contributors and taken into consideration in the development of
the project.
On the other hand, if you are able to take action on the issue
[please submit a pull request][github-pull-request] instead. Development will go
a lot faster with contributions from the community, be it in code, documentation
or any other form.
Any contribution is more than welcome.
### Setup
Start by cloning the project into your system and running the bootstrapping
script included to set up your development environment:
```sh
#!/bin/sh
git clone https://github.com/pfac/webtrap.git
cd webtrap
./bin/setup
```
Here's what the script does:
1. Checks the existence of a compatible Ruby environment (MRI 2.0+);
2. Checks the presence of [Bundler][bundler], and installs it if missing;
3. Installs all dependencies.
Feel free to check the script before running it. To check if everything is
correctly set up run:
```sh
#!/bin/sh
bundle exec rake
```
That will run the linters and acceptance tests. If the tests fail please check
the [build status][travis-ci] for the branch you checked out. Unless the build
status is already failing, please investigate the issue on your environment. If
you found a defect in the bootstraping script, please file an issue to let us
know (be as detailed as possible).
### Development
In this project we use BDD with Cucumber. Ideally you should start with a
successful build, which you can check by running:
```sh
#!/bin/sh
bundle exec rake
```
It may happen that the branch where you started (usually `master`) is already
broken on [the CI][travis-ci]. If that is the case try to focus only on the scenarios you
are working on, by running instead:
```sh
#!/bin/sh
cucumber features/
```
Start by describing your idea in either a new scenario or a whole new feature
file. If you are not sure which one to go for, create a new feature file and
someone will point you in the right direction during code revision. Make sure
your scenario fails before proceeding.
After that, implement the necessary code required to make your scenario pass. If
you find yourself in trouble feel free to [create an issue][github-issue]
pointing to your changes and someone will try to help you.
Once your scenario passes, refactor as required. Make sure your code gets
properly checked by the linters. When you feel your changes are ready,
[submit a pull request][github-pull-request]. We'll review it in the nicest way
possible. :smile:
For a short-list to follow before submitting your pull request, see
[CONTRIBUTING](./CONTRIBUTING.md).
### Deployment
Any main contributor can deploy a new version. To do so, update the version
number as appropriate according to [Semantic Versioning][semver] and run the
deployment script:
```sh
#!/bin/sh
./bin/deploy
```
On the other hand, if you are not a main contributor with deployment
permissions your idea will have to wait for a new version release to become
available in [RubyGems][rubygems] once it gets accepted.
At the moment there is no need for a release schedule, so new versions will be
released at the discretion of the main contributors team. Should you require
a pending feature to be released, feel free to mention it in your pull request
once it gets merged, or to open a new issue. We'll try to honor such requests
as much as possible when reasonable.
## About
WebTrap was originally designed by and is currently maintained by
[Pedro Costa][pfac]. All artifacts in this project are released under the
[MIT license](./LICENSE.txt).
[bundler]: http://bundler.io/
[equivalent-xml]: https://github.com/mbklein/equivalent-xml
[github-issue]: https://github.com/pfac/webtrap/issues/new
[github-pull-request]: https://github.com/pfac/webtrap/pull/new
[pfac]: https://github.com/pfac
[rubygems]: https://rubygems.org/gems/webtrap
[semver]: http://semver.org/
[travis-ci]: https://travis-ci.org/pfac/webtrap