如何测试嵌入式红宝石应用程序?

P

我有一个在ac应用程序中运行的嵌入式ruby解释器,以及一个充当c应用程序接口的ruby类。所以看起来像这样:

class MyApi
  include RealCAPI

  def api_method
    some_call_to_c_api
  end 

end

在与api交互的ruby类中,我有类似的东西。我创建MyApi类的实例,然后在该实例上调用方法。

class Foo

  def initialize
    api = MyApi.new
    ...
    ...
  end

  def do_something
     bar = api.api_method
     ...
     ...
     ... 
     final_result  #is a function of Foo methods but depends on something from the api
  end

end

我想用这样的东西测试Foo类:

describe Foo do
  it "should do something" do
    foo = Foo.new
    expect(foo.do_something to eq("something")
   end
end

问题在于,对api的任何调用都不会在c应用程序之外起作用。我该如何测试Foo课程?

我是否尝试以某种方式在c应用程序中进行测试?

我是否编写仅模拟MyApi类的独立测试,以模仿c应用程序中发生的情况?

我意识到,如果我模拟了api,我将无法真正对其进行测试,但是至少我将能够测试使用该API的类,对吗?

灵巧的

正如您所说,我认为您必须嘲笑api。这里要测试的是ruby代码,因此您可能应该坚持并测试ruby代码。

您最终会说一句:只要我的api能够执行某项操作,那么我的ruby代码就可以按照指定的方式工作。这很好,并且不依赖于您的api是否正常工作。

当然,您可能必须为您的api编写一些测试。但是将两个测试分开对我来说似乎是个好主意!

编辑

不确定这是否是您的问题,但是可以使用类似的方法轻松完成

it "should do something" do 
  MyApi.any_instance.stub(:ping).and_return("pong") #so that when foo calls ping, the api returns "pong"
  foo = Foo.new
  expect....
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从命令行调用嵌入式jre以便运行Java应用程序

如何在springboot应用程序中使用嵌入式mongoDB进行junit测试?

如何使嵌入式mongodb在应用程序关闭时保持数据?

如何管理嵌入式OSGi应用程序中的包/依赖关系?

如何将嵌入式框架的dSYM文件包含到应用程序存档中

从应用程序扩展链接到嵌入式框架

C ++应用程序中的嵌入式pdfium

如何在iOS的嵌入式专用框架和应用程序中使用静态库

如何使用嵌入式tomcat会话集群设置Spring Boot应用程序?

如何使用Spring Boot应用程序在嵌入式Jetty中配置异步超时

如何在Spring Boot应用程序中排除嵌入式Tomcat

如何通过主屏幕书签(嵌入式)检测到正在访问该应用程序?

如何从嵌入式应用程序实际使用设备树Blob?

转换为嵌入式红宝石

具有独立应用程序的嵌入式Linux

导轨和嵌入式红宝石

如何使用HTML中的嵌入式Java应用程序进行本地文件系统访问

如何查询嵌入式OLE应用程序的显示名称

Java Web应用程序中的嵌入式Derby

用于非Spring应用程序的Junit测试嵌入式数据库

如何在Haml文件中的嵌入式红宝石中像<br />或\ n那样换行?

如何告诉Angular2忽略嵌入式Angular1应用程序?

是否可以在测试中使用嵌入式红宝石?

如何从本机iOS应用程序控制嵌入式Unity应用程序

如何在angular2应用程序中使用Braintree的嵌入式UI?

远程执行Qt嵌入式应用程序

“拆分”嵌入式系统上的应用程序

如何从嵌入式应用程序接收 returnurl 事件?

如何将查询字符串从 Shopify 传递到嵌入式应用程序?