Goliath + Redis:测试请求序列

时间:2013-06-25 08:32:56

标签: ruby testing redis goliath

我写了一个端点,它有两个操作:PUT和GET。 GET检索PUT是什么,因此确保两种工作的好方法是按顺序测试它们。

我的cURL测试告诉我服务有效。但是,我无法通过我的测试来做同样的事情!

it "accepts authenticated PUT data" do
    attributes1 = {
      user: {
        lat: '12.34',
        lng: '56.78'
      }
    }

    with_api(Location, { log_stdout: true, verbose: true }) do
      put_request({ query: { auth_token: 'abc' }, body: attributes1.to_json }) do |client|
        client.response_header.status.must_equal 201

        get_request({ query: { auth_token: 'abc' } }) do |client|
          client.response_header.status.must_equal 200
          client.response.must_match_json_expression([attributes1[:user]])
        end
      end
    end
end

请注意,PUT接受正文中的JSON,GET返回JSON。该服务使用Redis作为数据存储区,我使用mock_redis来模拟它。

test_helper.rb中:

$redis = MockRedis.new

class Goliath::Server
  def load_config(file = nil)
    config['redis'] = $redis
  end
end

规格顶部:

before do
  $redis.flushdb
end

GET应该检索只是PUT的内容,而是检索JSON“null”。

我做了什么明显错误的事吗?也许我如何将身体数据传递给请求?

当我的测试运行时,这肯定会有助于获得更好的日志记录。我尝试了{log_stdout:true,verbose:true}选项,但这似乎只是从Goliath服务器输出基本的INFO记录,它没有告诉我任何有关数据和参数的信息。

任何帮助将不胜感激!

0 个答案:

没有答案