Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

synthesis

Package Overview
Dependencies
Maintainers
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

synthesis

  • 0.2.8
  • Rubygems
  • Socket score

Version published
Maintainers
3
Created
Source

= Synthesis

== A tool for verifying mock object assumptions in tests

== Installation

sudo gem i synthesis

== Download

Synthesis RubyForge page ( http://rubyforge.org/projects/synthesis )

== Dependencies

Synthesis's core doesn't have any dependencies.

When used with the Mocha adapter, it will depend on the Mocha[http://mocha.rubyforge.org] library.

When used with the RSpec adapter, it will depend on the RSpec[http://rspec.info/] library.

== Usage

Synthesis can be used through its Rake task. It has two adapters: Mocha (with Test::Unit, etc) and RSpec. If +adapter+ is not specified, the Mocha adapter will be used by default.

By default, Synthesis outputs to +STDOUT+, but output can be redirected to alternative IO streams.

Synthesis can be setup to ignore certain classes or modules when collecting expectations for verification.

If +pattern+ is not specified, it will default to test/**/*_test.rb

As of version 0.2.0, Synthesis has a +DOT+ formatter which, when used, will output text in the DOT graph description language, producing system visualizations as specified by the simulated interactions in the system's tests. The output of the +DOT+ formatter can be used with tools like Graphviz( http://www.graphviz.org/ ). The +DOT+ formatter depends on the +parse_tree+ and +sexp_processor+ libraries.

== Usage examples

To use with Test::Unit and Mocha, ignoring Array and Hash:

require "synthesis/task"

Synthesis::Task.new do |t| t.pattern = 'test/unit/**/*_test.rb' t.ignored = [Array, Hash] end

To use with RSpec, running all specs in the spec directory:

require "synthesis/task"

Synthesis::Task.new do |t| t.adapter = :rspec t.pattern = 'spec/**/*_spec.rb' end

To to a file:

require "synthesis/task"

Synthesis::Task.new do |t| t.out = File.new "synthesis.test.txt", "a" end

To output a DOT graph, first make sure you have sexp_processor installed:

sudo gem install sexp_processor

Then, to output a file called "synthesis.dot", do (if formatter_out is not specified, the default ouput is STDOUT):

require "synthesis/task"

Synthesis::Task.new do |t| t.formatter = :dot t.formatter_out = "synthesis.dot" end

To use Synthesis with Rails:

require "synthesis/task"

Synthesis::Task.new do |t| RAILS_ENV = "test" Rake::Task['environment'].invoke # This loads the Rails environment, which may make your build slower. Use only if needed t.pattern = 'test/**/*_test.rb' end

== Utilities

=== mock_instance

require "synthesis/util/mock_instance" foo_mock = Foo.mock_instance(arg_one, arg_2)

This is equivalent, but without calling the real initialize method, to:

foo_mock = Foo.new Foo.expects(:new).with(arg_one, arg_two).returns(foo_mock)

Or, in the case of RSpec, it is equivalent to:

foo_mock = Foo.new Foo.should_receive(:new).with(arg_one, arg_two).and_return(foo_mock)

Either "mocha_standalone" or "spec/mocks" need to be required before using mock_instance.

== Git

Public clone URL: git://github.com/gmalamid/synthesis.git

== Contributors

Danilo Sato, Paul Nasrat, Jerome Riga

== Discuss

http://groups.google.com/group/synthesized-testing

== Related reading

http://nutrun.com/weblog/using-synthesis-with-testunit-and-mocha

FAQs

Package last updated on 05 Aug 2009

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc