Rspec 带参数的用户let
我想测试这个类:Rspec 带参数的用户let,rspec,Rspec,我想测试这个类: class Response def initialize(raw_response:) ........ end end 我想在rspec中发送多个原始响应。我实现了以下代码: let(:successful_response) { File.read(File.join('spec', 'fixtures', 'xml', 'successful_response.xml')) } ...... let(:response)
class Response
def initialize(raw_response:)
........
end
end
我想在rspec中发送多个原始响应。我实现了以下代码:
let(:successful_response) { File.read(File.join('spec', 'fixtures', 'xml', 'successful_response.xml')) }
......
let(:response) { described_class.new(raw_response: file_name) }
context '#response' do
it 'submits response' do
let(:file_name) { :successful_response }
expect(:response(raw_response: :file_name).parse_response).to include(................)
end
end
但是当我运行代码时,我得到了以下错误:
syntax error, unexpected '(', expecting ')'
expect(:response(raw_response: :file_name).par...
^
如何解决此问题?以下是您的解决方法:
context 'when response is successful' do
let(:file_name) { successful_response }
it 'submits response' do
expect(response.parse_response).to include(...)
end
end
context 'when response is unsuccessful' do
let(:file_name) { 'bad.xml' }
it 'submits response' do
expect(response.parse_response).to include(...)
end
end
不要在中使用让在中指定它/它将不起作用。如果需要更改不同上下文的值,请使用context
您可以考虑让
定义一个记忆化的方法
let(:response) { described_class.new(raw_response: filename) }
let(:filename) { :foo }
就像
def response
described_class.new(raw_response: filename)
end
def filename
:foo
end
上面的答案一次解决了几个格式问题,但只想指出,OP得到的具体错误是:
语法错误,意外的“(”,应为“)”
预期:(响应(RWYRAPIO::FILILNEX)…PAR…<代码> < /P>
是因为:response
是一个符号
,而不是您可以传递参数的对象,因此(
是意外的
如果您确实想测试某个符号
的某些内容,那么它可以工作,但需要注意的是,这只是测试符号本身,而不是let
变量。
期望(:请求)。成为(符号)
response
无:
是如何访问由let
创建的变量:
期望(response.parse_response).包含(…)