我有外部API端点,比方说:http://www.fake_me_hard.com/api
。我想从我的应用程序中调用一些。
端点接受以下结构作为参数:
{
:amount => amount,
:backurl => root_path,
:language => locale,
:orderid => order_id,
:pm => payment_method,
:accept_url => "/payment/success",
:exception_url => "/payment/failure",
}
收集此哈希是负责方法EndpointRequestCollector.give_me_hash
。
我应该如何测试give_me_hash
是否返回正确的结构?
我可以使用相同的策略在specs
和class
中创建此结构,以便:
class EndpointRequestsCollector
def self.give_me_hash
{
#....collecting hash #1
}
end
end
describe EndpointRequestCollector do
context '.give_me_hash' do
it 'returns proper structure' do
expect(described_class.give_me_hash).to eq(
{
#... collecting hash #2
}
)
end
end
end
...但它会在2个地方重复相同的代码,并且不会测试任何东西。
你知道对这个问题有什么好处吗?
答案 0 :(得分:0)
也许:
let(:args) {["amount", "backurl", "language", "orderid", "pm", "accept_url", "exception_url"]}
#...
it 'returns proper structure' do
described_class.give_me_hash.each_key do |key|
expect(key).to satisfy{|key| args.include?(key)}
end
end