【发布时间】:2015-02-22 03:53:28
【问题描述】:
假设我有以下课程:
class AbstractClass
# code omitted
def get_from_api(data)
APIRequestClass.send_request(config_info: config_info(data))
end
# force subclass to add method w/ proper config hash
def config_info(data)
raise NotImplementedError
end
end
我想编写一个向 API 提交请求的集成测试。但是,我需要定义 config_info 来执行此操作。这是我为完成这项工作所做的尝试之一:
# abstract_class_test.rb
# once this works I would remove class declaration to helper file
require_relative '../test_setup'
class SpecificClass < AbstractClass
def config_info(data)
{
sample: "Foo",
data: data
}
end
end
class AbstractClassTests < MiniTest::Test
def setup
@instance = SpecificClass.new
end
def test_that_something_comes_back_from_api
puts @instance.config_info("data")
response = @instance.get_from_api("data")
assert_equal jobs.class, Array
end
end
puts 语句导致NotImplementedError。
-
在这种情况下是否有更好的方法来编写集成测试(即不定义
SpecificClass)? -
为什么方法查找路径中没有
SpecificClass'实现config_info? -
有没有更好的方法来强制最终用户提供发出 API 请求所需的配置信息?
现在我将简单地测试APIRequestClass.send_request 方法并传入适当的哈希值。我对上面提出的问题仍然很感兴趣,但也许第四个问题是:从AbstractClass 一路测试此功能与从APIRequestClass 简单测试相比,是否有显着优势?
【问题讨论】:
标签: ruby integration-testing minitest