我正在为基于 Web 的 API 编写一个 Ruby 包装器,每个请求都需要一个唯一的事务 ID 与请求一起发送。
我已经使用 编写了一个测试 shell MiniTest::Spec
,但是事务 id 在每个测试之间没有增加。
测试shell,省略了繁琐的细节,如下:
describe "should get the expected responses from the server" do
before :all do
# random number between 1 and maxint - 100
@txid = 1 + SecureRandom.random_number(2 ** ([42].pack('i').size * 8 - 2) - 102)
@username = SecureRandom.urlsafe_base64(20).downcase
end
before :each do
# increment the txid
@txid += 1
puts "new txid is #{@txid}"
end
it "should blah blah" do
# a test that uses @txid
end
it "should blah blah blah" do
# a different test that uses the incremented @txid
end
end
然而,那里的puts
行显示@txid
在每个测试之间实际上并没有增加。
更多测试表明,在测试主体中对实例变量的任何赋值都不会影响变量的值。
这是预期的吗?处理这个问题的正确方法是什么?