WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

nutrun/synthesis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sudo gem i synthesis

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

Synthesis’s core doesn’t have any dependencies.

When used with the Mocha adapter, it will depend on the Mocha library.

When used with the RSpec adapter, it will depend on the RSpec library.

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( www.graphviz.org/ ). The DOT formatter depends on the parse_tree and sexp_processor libraries.

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
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.

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

Danilo Sato, Paul Nasrat, Jerome Riga

groups.google.com/group/synthesized-testing

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

About

Ruby code analysis tool for verifying mock object assumptions in tests

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages