如何在机架/测试中设置env ['SERVER_NAME']?

B S*_*ven 4 ruby rack rspec sinatra webmock

在Sinatra测试中,env['SERVER_NAME']默认为www.example.com。如何将其设置为任意域?

水豚有.default_host方法,但不使用水豚。

或者,是否可以更改env [ DEFAULT_HOST]?

使用RSpec,Sinatra,WebMock。

编辑:添加env['SERVER_NAME'] = 'www.foo.com'到RSpec测试引发异常:

NameError: undefined local variable or method 'env' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007fe6ce3b5ff8>

iai*_*ain 5

env只能在Sinatra应用程序中访问该助手。

一种更改方法是在发出请求时:

get "/blah", {}, {'HTTP_SERVER_NAME' => 'www.foo.com' }
Run Code Online (Sandbox Code Playgroud)

机架/测试get或的第三个参数post是标题哈希。