提交 15c31c76 编写于 作者: W wycats

open_session can just return the a dup of the current context.

At this point, its entire purpose in the open_session {} case was to
delegate back to the IntegrationTest anyway.
上级 1f93a46b
......@@ -297,7 +297,7 @@ def app
# Reset the current session. This is useful for testing multiple sessions
# in a single test case.
def reset!
@integration_session = open_session
@integration_session = Integration::Session.new(app)
end
%w(get post put head delete cookies assigns
......@@ -323,30 +323,9 @@ def reset!
# can use this method to open multiple sessions that ought to be tested
# simultaneously.
def open_session(app = nil)
session = Integration::Session.new(app || self.app)
# delegate the fixture accessors back to the test instance
extras = Module.new { attr_accessor :delegate, :test_result }
if self.class.respond_to?(:fixture_table_names)
self.class.fixture_table_names.each do |table_name|
name = table_name.tr(".", "_")
next unless respond_to?(name)
extras.__send__(:define_method, name) { |*args|
delegate.send(name, *args)
}
end
dup.tap do |session|
yield session if block_given?
end
# delegate add_assertion to the test case
extras.__send__(:define_method, :add_assertion) {
test_result.add_assertion
}
session.extend(extras)
session.delegate = self
session.test_result = @_result
yield session if block_given?
session
end
# Copy the instance variables from the current session instance into the
......
......@@ -173,14 +173,12 @@ def setup
end
def test_opens_new_session
@test.class.expects(:fixture_table_names).times(2).returns(['foo'])
session1 = @test.open_session { |sess| }
session2 = @test.open_session # implicit session
assert_kind_of ::ActionController::Integration::Session, session1
assert_kind_of ::ActionController::Integration::Session, session2
assert_not_equal session1, session2
assert session1.respond_to?(:assert_template), "open_session makes assert_template available"
assert session2.respond_to?(:assert_template), "open_session makes assert_template available"
assert !session1.equal?(session2)
end
# RSpec mixes Matchers (which has a #method_missing) into
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册