Namespace
Methods
Instance Public methods
create_generated_attribute(attribute_type, name = 'test', index = nil)
Link
Create a Rails::Generators::GeneratedAttribute by supplying the attribute type and, optionally, the attribute name:
create_generated_attribute(:string, 'name')
generator(args=self.default_arguments, options={}, config={})
Link
Instantiate the generator.
run_generator(args=self.default_arguments, config={})
Link
Runs the generator configured for this class. The first argument is an array like command line arguments:
class AppGeneratorTest < Rails::Generators::TestCase
tests AppGenerator
destination File.expand_path("../tmp", File.dirname(__FILE__))
setup :prepare_destination
test "database.yml is not created when skipping Active Record" do
run_generator %w(myapp --skip-active-record)
assert_no_file "config/database.yml"
end
end
You can provide a configuration hash as second argument. This method returns the output printed by the generator.
# File railties/lib/rails/generators/testing/behaviour.rb, line 63 def run_generator(args=self.default_arguments, config={}) capture(:stdout) do args += ['--skip-bundle'] unless args.include? '--dev' self.generator_class.start(args, config.reverse_merge(destination_root: destination_root)) end end
Instance Protected methods
capture(stream)
Link
# File railties/lib/rails/generators/testing/behaviour.rb, line 104 def capture(stream) stream = stream.to_s captured_stream = Tempfile.new(stream) stream_io = eval("$#{stream}") origin_stream = stream_io.dup stream_io.reopen(captured_stream) yield stream_io.rewind return captured_stream.read ensure captured_stream.close captured_stream.unlink stream_io.reopen(origin_stream) end