最近在做微信公众平台的开发,自动回复这边做了个带状态记录的关键字回复,内容写在 yml 里,类似下面这样:
菜单:
body: |
请回复对应功能序号:
[1]功能1
[2]功能1
1:
body: |
请回复对应功能序号:
[A]子功能A
[B]子功能B
A:
body: AAAAAAA
B:
body: BBBBBB
...
当你依次回复"菜单"、"1"、"A"三个关键字之后,就会得到一串"AAAAA"的回复 本着完全测试的目的,就写了个递归的测试,把整个关键字列表都跑一遍 像下面这样的代码一样
define_method(:recursion_test) do |key,value|
print auto_reply
#describe " 响应[#{key}]目录" do
it "响应[#{key}]消息" do
msg_content = user_sent['text_msg']
msg_content['Content']=key
msg = Wxmessage.new(msg_content.to_msg)
expect( get_content(msg.reply) ).to eq(value['body'])
end
if value.length>1 #子消息
#describe '响应子消息' do
value.each_pair do |k,v|
recursion_test(k,v)
end
#end
end
#end
end
可是,似乎是作用域的问题,整个 rspec 的 DSL 都失效了。 怎样传递作用域?对于类似的情况,怎样更好的测试?