如何在测试单元中使用事务夹具

时间:2014-06-28 05:12:34

标签: ruby-on-rails testcase testunit

当我运行测试用例时,我不想在我的数据库中存储记录。我怎样才能实现它。

这是我的代码: -

class Sample << Test::Unit::TestCase

def setup
 # code
end

def teardown
# code
end

def test_sample
# code
end

end

使用以下宝石: -

gem&#39; test-unit&#39;

运行测试和api调用GET / POST / PUT / DELETE方法来创建/删除数据库中的记录。

1 个答案:

答案 0 :(得分:0)

我认为你的意思是你正在使用的对象不是持久存储在本地数据库中,而是存储在通过API访问的远程系统中。也就是说,当您保存对象属性时,它们将通过API调用发送到远程服务器。

看看webmock。它适用于测试/单位和测试/ minitest(这是类固醇的测试/单位)。基本上,您定义应该由操作产生的http调用,并将其传递给webmock。然后,当测试动作时,webmock将拦截http调用,并返回模拟响应。如果操作调用与您定义的操作调用不同,则web模拟将生成错误,导致测试失败。

所以说创建一个示例,你希望对带有示例属性的example.com/samples进行POST:foo设置为'bar',你可以写一个这样的测试:

def test_create_sample
  data = 'bar'
  sample = Sample.new 
  sample.foo = data
  stub_request(:post, "example.com/samples/1").
    with(:body => {:sample => {foo: data}})
  assert sample.save
end

这也假设您的保存操作检查api响应,如果一切正常,则返回true。