当我运行测试用例时,我不想在我的数据库中存储记录。我怎样才能实现它。
这是我的代码: -
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方法来创建/删除数据库中的记录。
答案 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。