ww 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +30 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +38 -0
- data/Rakefile +1 -1
- data/example/spy_eye.ru +1 -0
- data/example/spy_eye_output.html +260 -266
- data/lib/ww/double/mock.rb +23 -3
- data/lib/ww/double/spy.rb +5 -1
- data/lib/ww/double.rb +1 -3
- data/lib/ww/server.rb +20 -2
- data/lib/ww/spy_eye.html.haml +26 -26
- data/lib/ww.rb +1 -1
- data/spec/spec_helper.rb +18 -0
- data/spec/ww/double/mock_spec.rb +60 -0
- data/spec/ww/double/spy_spec.rb +80 -0
- data/spec/ww/double/stub_spec.rb +59 -0
- data/spec/ww/server_integration_spec.rb +22 -1
- metadata +8 -3
- data/spec/ww/double_spec.rb +0 -144
data/lib/ww/double/spy.rb
CHANGED
@@ -13,6 +13,10 @@ module Ww
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
def spy_them_all!
|
17
|
+
before { spy! }
|
18
|
+
end
|
19
|
+
|
16
20
|
def requests
|
17
21
|
@requests ||= Store.new
|
18
22
|
end
|
@@ -23,7 +27,7 @@ module Ww
|
|
23
27
|
|
24
28
|
module InstanceMethods
|
25
29
|
def spy!
|
26
|
-
self.class.store(@request)
|
30
|
+
self.class.store(@request) if @spyed ^ (@spyed = true)
|
27
31
|
end
|
28
32
|
alias stump! spy!
|
29
33
|
end
|
data/lib/ww/double.rb
CHANGED
@@ -18,16 +18,14 @@ module Ww
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def unbound_action(klass, mname, block)
|
21
|
-
ret = nil
|
22
21
|
klass.module_eval do
|
23
22
|
begin
|
24
23
|
define_method(mname, &block)
|
25
|
-
|
24
|
+
instance_method(mname)
|
26
25
|
ensure
|
27
26
|
remove_method(mname) if instance_methods.include?(mname)
|
28
27
|
end
|
29
28
|
end
|
30
|
-
return ret
|
31
29
|
end
|
32
30
|
module_function :unbound_action
|
33
31
|
end
|
data/lib/ww/server.rb
CHANGED
@@ -24,7 +24,7 @@ module Ww
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def_delegators :current_app, *double_methods = %w[
|
27
|
-
spy requests mock verify stub
|
27
|
+
spy spy_them_all! requests mock verify stub
|
28
28
|
]
|
29
29
|
|
30
30
|
attr_reader :app, :port
|
@@ -37,6 +37,7 @@ module Ww
|
|
37
37
|
|
38
38
|
def start_once
|
39
39
|
@app.reset!
|
40
|
+
current_app.testing_thread = Thread.current
|
40
41
|
start! unless running?
|
41
42
|
end
|
42
43
|
|
@@ -60,10 +61,27 @@ module Ww
|
|
60
61
|
private
|
61
62
|
def run_with_picking_server_instance!
|
62
63
|
q = Queue.new
|
63
|
-
|
64
|
+
opt = handler_options(@handler)
|
65
|
+
@thread = Thread.new { @handler.run(@app, opt ) {|server| q << silence!(server) } }
|
64
66
|
@server = q.pop
|
65
67
|
end
|
66
68
|
|
69
|
+
def handler_options(handler)
|
70
|
+
opt = {:Port => @port}
|
71
|
+
if handler.name == "Rack::Handler::WEBrick"
|
72
|
+
l = WEBrick::Log.new("/dev/null")
|
73
|
+
opt.update(:Logger => l, :AccessLog => [l, WEBrick::AccessLog::COMMON_LOG_FORMAT])
|
74
|
+
end
|
75
|
+
return opt
|
76
|
+
end
|
77
|
+
|
78
|
+
def silence!(server)
|
79
|
+
case server.class.name
|
80
|
+
when "Thin::Server" then server.silent = true
|
81
|
+
end
|
82
|
+
return server
|
83
|
+
end
|
84
|
+
|
67
85
|
def shutdown_http_server
|
68
86
|
case @server.class.name
|
69
87
|
when "WEBrick::HTTPServer" then @server.shutdown
|
data/lib/ww/spy_eye.html.haml
CHANGED
@@ -6,6 +6,14 @@
|
|
6
6
|
%head
|
7
7
|
%title&= title
|
8
8
|
%script{:src=>"http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"}
|
9
|
+
:javascript
|
10
|
+
$(function(){
|
11
|
+
$(".request .headers h3").click(function(){ $(this).next("table").toggle() });
|
12
|
+
$(".request .body h3").click(function(){ $(this).next("pre").toggle() });
|
13
|
+
$(".request .headers table").hide();
|
14
|
+
$(".request .body pre").hide();
|
15
|
+
});
|
16
|
+
|
9
17
|
%style{:type=>"text/css"}
|
10
18
|
:sass
|
11
19
|
body
|
@@ -15,7 +23,7 @@
|
|
15
23
|
h1
|
16
24
|
font-size: 10px
|
17
25
|
|
18
|
-
|
26
|
+
.request
|
19
27
|
font-size: 10px
|
20
28
|
border: 1px solid silver
|
21
29
|
padding: 0 1em
|
@@ -50,18 +58,18 @@
|
|
50
58
|
font-weight: normal
|
51
59
|
font-family: 'Courier', monospace
|
52
60
|
|
53
|
-
.headers table,
|
61
|
+
.headers table, .body pre
|
54
62
|
border: 1px dashed green
|
55
63
|
margin: 1em
|
56
64
|
padding: 1em
|
57
65
|
|
58
|
-
|
66
|
+
.body pre
|
59
67
|
overflow: auto
|
60
68
|
font-size: 12px
|
61
69
|
%body
|
62
70
|
%h1&= title
|
63
71
|
- requests.each do |wreq|
|
64
|
-
|
72
|
+
.request{:id => wreq.object_id}
|
65
73
|
%h2
|
66
74
|
%span.method&= wreq.request_method
|
67
75
|
%span.path&= wreq.fullpath
|
@@ -69,27 +77,19 @@
|
|
69
77
|
%span.time&= wreq.time.iso8601
|
70
78
|
from
|
71
79
|
%span.source&= wreq.ip
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
-
|
77
|
-
|
78
|
-
%
|
79
|
-
|
80
|
-
%td&= v
|
80
|
+
.headers
|
81
|
+
%h3 Headers
|
82
|
+
%table
|
83
|
+
- wreq.env.each do |k,v|
|
84
|
+
- next if k =~ /\A[a-z]/
|
85
|
+
%tr
|
86
|
+
%th&= k
|
87
|
+
%td&= v
|
81
88
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
89
|
+
- unless wreq.get?
|
90
|
+
.body
|
91
|
+
%h3
|
92
|
+
Body
|
93
|
+
%span.media_type= wreq.media_type
|
94
|
+
%pre&= wreq.parsed_body.pretty_inspect
|
88
95
|
|
89
|
-
:javascript
|
90
|
-
jQuery(function(){
|
91
|
-
$("div.stump .headers h3").click(function(){ $(this).next("table").toggle() });
|
92
|
-
$("div.stump .body h3").click(function(){ $(this).next("pre").toggle() });
|
93
|
-
$("div.stump .headers table").hide();
|
94
|
-
$("div.stump .body pre").hide();
|
95
|
-
});
|
data/lib/ww.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -2,3 +2,21 @@ require 'rubygems'
|
|
2
2
|
require 'sinatra'
|
3
3
|
$: << File.expand_path("../lib", File.dirname(__FILE__))
|
4
4
|
|
5
|
+
module WwSpec
|
6
|
+
module ExampleMethods
|
7
|
+
def servlet_defining_get_root
|
8
|
+
Ww::Servlet.base do
|
9
|
+
get("/") do
|
10
|
+
response.status = 200
|
11
|
+
response["Content-Type"] = "text/plain"
|
12
|
+
response.body = "Hello World"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Spec::Runner.configure do |config|
|
20
|
+
config.include WwSpec::ExampleMethods
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require File.expand_path("../../spec_helper", File.dirname(__FILE__))
|
2
|
+
require 'ww/servlet'
|
3
|
+
|
4
|
+
describe Ww::Double::Mock, "with Servlet" do
|
5
|
+
before do
|
6
|
+
@server = servlet_defining_get_root
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "mock(:get, '/', :verify => lambda" do
|
10
|
+
before do
|
11
|
+
v = Proc.new {|req, par| par["entity_id"].to_i == 1 && par["entity_value"] == "var" }
|
12
|
+
|
13
|
+
@server.mock( :get, '/', :verify => v) do
|
14
|
+
response.status = 200
|
15
|
+
response["Content-Type"] = "text/plain"
|
16
|
+
response.body = "Hi World"
|
17
|
+
end
|
18
|
+
@server.testing_thread = Thread.new{ sleep }
|
19
|
+
end
|
20
|
+
|
21
|
+
it do
|
22
|
+
@server.new.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
23
|
+
@server.testing_thread.should_not be_alive
|
24
|
+
end
|
25
|
+
|
26
|
+
it do
|
27
|
+
@server.new.call( Rack::MockRequest.env_for("/?entity_id=1&entity_value=var", :method => "GET"))
|
28
|
+
@server.testing_thread.should be_alive
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "mock(:get, '/')" do
|
33
|
+
before do
|
34
|
+
@server.mock(:get, '/') do
|
35
|
+
response.status = 200
|
36
|
+
response["Content-Type"] = "text/plain"
|
37
|
+
response.body = "Hi World"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "call" do
|
42
|
+
before do
|
43
|
+
app = @server.new
|
44
|
+
@response = app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
45
|
+
end
|
46
|
+
|
47
|
+
subject{ @response }
|
48
|
+
|
49
|
+
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
50
|
+
it {
|
51
|
+
expect{ @server.verify }.should_not raise_error Ww::Double::MockError
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "don't call" do
|
56
|
+
it { expect{ @server.verify }.should raise_error Ww::Double::MockError }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require File.expand_path("../../spec_helper", File.dirname(__FILE__))
|
2
|
+
require 'ww/servlet'
|
3
|
+
|
4
|
+
describe Ww::Double, "with Servlet" do
|
5
|
+
before do
|
6
|
+
@server = servlet_defining_get_root
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "spy(:get, '/')" do
|
10
|
+
before do
|
11
|
+
@server.spy(:get, '/') do
|
12
|
+
response.status = 200
|
13
|
+
response["Content-Type"] = "text/plain"
|
14
|
+
response.body = "Hi World"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "GET / リクエストの" do
|
19
|
+
before do
|
20
|
+
app = @server.new
|
21
|
+
@response = app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
22
|
+
end
|
23
|
+
|
24
|
+
subject{ @server.requests.first }
|
25
|
+
|
26
|
+
it { should be_a Rack::Request }
|
27
|
+
its(:request_method) { should == 'GET' }
|
28
|
+
its(:fullpath) { should == "/" }
|
29
|
+
|
30
|
+
it "bodyは空のIOであること" do
|
31
|
+
subject.body.rewind
|
32
|
+
subject.body.read.should == ""
|
33
|
+
end
|
34
|
+
|
35
|
+
it "レスポンスは想定どおりのものであること" do
|
36
|
+
@response.should ==
|
37
|
+
[200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "spy(:get, '/') backword compat, old version spy! or spy(:get..) called stump!" do
|
43
|
+
before do
|
44
|
+
@server.get('/backword') do
|
45
|
+
stump!
|
46
|
+
|
47
|
+
response.status = 200
|
48
|
+
response["Content-Type"] = "text/plain"
|
49
|
+
response.body = "Hi World"
|
50
|
+
end
|
51
|
+
|
52
|
+
app = @server.new
|
53
|
+
@response = app.call( Rack::MockRequest.env_for("/backword", :method => "GET"))
|
54
|
+
end
|
55
|
+
|
56
|
+
subject{ @server.requests }
|
57
|
+
it { should_not be_empty }
|
58
|
+
it { @server.requests.first.should be_a Ww::Double::Spy::Request }
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "spy_them_all! - extend spy feature to all actions" do
|
62
|
+
before do
|
63
|
+
@server.spy_them_all!
|
64
|
+
@app = @server.new
|
65
|
+
3.times{ @app.call( Rack::MockRequest.env_for("/", :method => "GET")) }
|
66
|
+
end
|
67
|
+
subject{ @server }
|
68
|
+
|
69
|
+
it { should have(3).requests }
|
70
|
+
|
71
|
+
describe "do-not collect if already collected" do
|
72
|
+
before do
|
73
|
+
@server.spy(:get, '/spyed'){ "Hello" }
|
74
|
+
@app.call( Rack::MockRequest.env_for("/spyed", :method => "GET"))
|
75
|
+
end
|
76
|
+
it { should have(3 + 1).requests }
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.expand_path("../../spec_helper", File.dirname(__FILE__))
|
2
|
+
require 'ww/servlet'
|
3
|
+
|
4
|
+
describe Ww::Double::Stub, "included to Servlet" do
|
5
|
+
before do
|
6
|
+
@server = servlet_defining_get_root
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "stub(:get, '/dynamic_add')" do
|
10
|
+
before do
|
11
|
+
@server.stub(:get, '/dynamic_add') do
|
12
|
+
response.status = 200
|
13
|
+
response["Content-Type"] = "text/plain"
|
14
|
+
response.body = "Hi World"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
subject{
|
19
|
+
@server.new.call( Rack::MockRequest.env_for("/dynamic_add", :method => "GET"))
|
20
|
+
}
|
21
|
+
|
22
|
+
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "stub(:get, '/') # override" do
|
26
|
+
before do
|
27
|
+
@server.stub(:get, '/') do
|
28
|
+
response.status = 200
|
29
|
+
response["Content-Type"] = "text/plain"
|
30
|
+
response.body = "Hi World"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
subject{
|
35
|
+
@server.new.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
36
|
+
}
|
37
|
+
|
38
|
+
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "stub(:get, '/') # re-define after app initialized" do
|
42
|
+
before do
|
43
|
+
@app = @server.new
|
44
|
+
|
45
|
+
@server.stub(:get, '/') do
|
46
|
+
response.status = 200
|
47
|
+
response["Content-Type"] = "text/plain"
|
48
|
+
response.body = "Hi! World"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
subject{
|
53
|
+
@app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
54
|
+
}
|
55
|
+
|
56
|
+
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"9"}, ["Hi! World"]] }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
@@ -5,7 +5,7 @@ require 'json'
|
|
5
5
|
|
6
6
|
describe Ww::Server do
|
7
7
|
before do
|
8
|
-
Ww::Server.handler = :
|
8
|
+
Ww::Server.handler = :webrick
|
9
9
|
Ww::Server[:spec] ||= Ww::Server.build_double(3080) do
|
10
10
|
get("/goodnight") { "Good night" }
|
11
11
|
spy(:get, "/hello") { "Hello world" }
|
@@ -69,5 +69,26 @@ describe Ww::Server do
|
|
69
69
|
expect{ Ww::Server[:spec].verify }.should raise_error Ww::Double::MockError
|
70
70
|
end
|
71
71
|
end
|
72
|
+
|
73
|
+
describe "mocking with verifying expectation" do
|
74
|
+
before do
|
75
|
+
v = lambda {|req,par| par["key"] == "value" }
|
76
|
+
Ww::Server[:spec].mock(:get, "/goodnight", :verify => v) do
|
77
|
+
"OYASUMI-NASAI"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
it "fail unless access there" do
|
82
|
+
expect{
|
83
|
+
URI("http://localhost:3080/goodnight").read
|
84
|
+
}.should raise_error Ww::Double::MockError
|
85
|
+
end
|
86
|
+
|
87
|
+
it "pass if access there" do
|
88
|
+
expect{
|
89
|
+
URI("http://localhost:3080/goodnight?key=value").read
|
90
|
+
}.should_not raise_error
|
91
|
+
end
|
92
|
+
end
|
72
93
|
end
|
73
94
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ww
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- moro
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-20 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -61,10 +61,15 @@ extensions: []
|
|
61
61
|
extra_rdoc_files: []
|
62
62
|
|
63
63
|
files:
|
64
|
+
- README.rdoc
|
65
|
+
- ChangeLog
|
66
|
+
- MIT-LICENSE
|
64
67
|
- Rakefile
|
65
68
|
- spec/spec_helper.rb
|
66
69
|
- spec/ww/application_spec.rb
|
67
|
-
- spec/ww/
|
70
|
+
- spec/ww/double/mock_spec.rb
|
71
|
+
- spec/ww/double/spy_spec.rb
|
72
|
+
- spec/ww/double/stub_spec.rb
|
68
73
|
- spec/ww/double_spy_request_spec.rb
|
69
74
|
- spec/ww/server_integration_spec.rb
|
70
75
|
- spec/ww/server_spec.rb
|
data/spec/ww/double_spec.rb
DELETED
@@ -1,144 +0,0 @@
|
|
1
|
-
require File.expand_path("../spec_helper", File.dirname(__FILE__))
|
2
|
-
require 'ww/servlet'
|
3
|
-
|
4
|
-
describe Ww::Double, "with Servlet" do
|
5
|
-
before do
|
6
|
-
@server = Ww::Servlet.base do
|
7
|
-
get("/") do
|
8
|
-
response.status = 200
|
9
|
-
response["Content-Type"] = "text/plain"
|
10
|
-
response.body = "Hello World"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "stub(:get, '/dynamic_add')" do
|
16
|
-
before do
|
17
|
-
@server.stub(:get, '/dynamic_add') do
|
18
|
-
response.status = 200
|
19
|
-
response["Content-Type"] = "text/plain"
|
20
|
-
response.body = "Hi World"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
subject{
|
25
|
-
@server.new.call( Rack::MockRequest.env_for("/dynamic_add", :method => "GET"))
|
26
|
-
}
|
27
|
-
|
28
|
-
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "stub(:get, '/') # override" do
|
32
|
-
before do
|
33
|
-
@server.stub(:get, '/') do
|
34
|
-
response.status = 200
|
35
|
-
response["Content-Type"] = "text/plain"
|
36
|
-
response.body = "Hi World"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
subject{
|
41
|
-
@server.new.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
42
|
-
}
|
43
|
-
|
44
|
-
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "stub(:get, '/') # re-define after app initialized" do
|
48
|
-
before do
|
49
|
-
@app = @server.new
|
50
|
-
|
51
|
-
@server.stub(:get, '/') do
|
52
|
-
response.status = 200
|
53
|
-
response["Content-Type"] = "text/plain"
|
54
|
-
response.body = "Hi! World"
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
subject{
|
59
|
-
@app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
60
|
-
}
|
61
|
-
|
62
|
-
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"9"}, ["Hi! World"]] }
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "mock(:get, '/')" do
|
66
|
-
before do
|
67
|
-
@server.mock(:get, '/') do
|
68
|
-
response.status = 200
|
69
|
-
response["Content-Type"] = "text/plain"
|
70
|
-
response.body = "Hi World"
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe "call" do
|
75
|
-
before do
|
76
|
-
app = @server.new
|
77
|
-
@response = app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
78
|
-
end
|
79
|
-
|
80
|
-
subject{ @response }
|
81
|
-
|
82
|
-
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
83
|
-
it {
|
84
|
-
expect{ @server.verify }.should_not raise_error Ww::Double::MockError
|
85
|
-
}
|
86
|
-
end
|
87
|
-
|
88
|
-
describe "don't call" do
|
89
|
-
it { expect{ @server.verify }.should raise_error Ww::Double::MockError }
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
describe "spy(:get, '/')" do
|
94
|
-
before do
|
95
|
-
@server.spy(:get, '/') do
|
96
|
-
response.status = 200
|
97
|
-
response["Content-Type"] = "text/plain"
|
98
|
-
response.body = "Hi World"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe "GET / リクエストの" do
|
103
|
-
before do
|
104
|
-
app = @server.new
|
105
|
-
@response = app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
106
|
-
end
|
107
|
-
|
108
|
-
subject{ @server.requests.first }
|
109
|
-
|
110
|
-
it { should be_a Rack::Request }
|
111
|
-
its(:request_method) { should == 'GET' }
|
112
|
-
its(:fullpath) { should == "/" }
|
113
|
-
|
114
|
-
it "bodyは空のIOであること" do
|
115
|
-
subject.body.rewind
|
116
|
-
subject.body.read.should == ""
|
117
|
-
end
|
118
|
-
|
119
|
-
it "レスポンスは想定どおりのものであること" do
|
120
|
-
@response.should ==
|
121
|
-
[200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]]
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
describe "spy(:get, '/') backword compat" do
|
127
|
-
before do
|
128
|
-
@server.get('/backword') do
|
129
|
-
stump!
|
130
|
-
response.status = 200
|
131
|
-
response["Content-Type"] = "text/plain"
|
132
|
-
response.body = "Hi World"
|
133
|
-
end
|
134
|
-
|
135
|
-
app = @server.new
|
136
|
-
@response = app.call( Rack::MockRequest.env_for("/backword", :method => "GET"))
|
137
|
-
end
|
138
|
-
|
139
|
-
subject{ @server.requests }
|
140
|
-
it { should_not be_empty }
|
141
|
-
it { @server.requests.first.should be_a Ww::Double::Spy::Request }
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|