问题标签 [stub]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
507 浏览

unit-testing - 使用输入参数存根对象

因此,我正在尝试存根数据库连接器以便为其编写测试。问题是数据库连接器是一个非常薄的层,对它的查询有点开放。我希望我的代码能够从数据库中请求一个变量,并且连接器应该可以接受。此调用的签名如下所示:

(这一切都在 MATLAB 中——希望答案与语言无关,或者至少在 MATLAB 中不是不可行的。)

当我在我的代码中使用它时,dimensionName它是存储在数据库中的少数东西之一。如果代码调用它,但它不存在,那很好。这里的问题是我想测试一些对 进行两次调用的代码,getDimension例如:

出于(希望)显而易见的原因,alt并且str不保证相同。事实上,它们通常不是。

所以,我的问题。如果我想存根 getDimension 以返回良好的测试值,我该怎么做?创建getDimensionAlt似乎很笨拙,因为可以从数据库中出来的东西的数量是无限的,维护起来会很痛苦。有没有比将逻辑放入我的存根对象更好的方法?这似乎是错误的处理方式......

编辑:建议设置一个 testDB。那么我不是必须为每个测试用例设置一个 testDB 吗?在每个测试中,我都必须创建一个数据库连接,将其作为存根返回,运行测试,然后清理数据库连接。这似乎对每个测试来说都是很多开销,尤其是当它甚至不是我正在测试的系统时。

我想可以设置一个 testDB,并每次都用适当的值填充它。这是好习惯吗?

编辑2:也许我的问题不清楚。我有一小段代码正在尝试测试。它并不比上面那两行复杂多少,我想干净利落地测试一下。问题是存根getDimension调用取决于参数。我不需要将此存根与其他测试重用。

I think the answer might be "It's OK to have simple logic in your stubs." This is all confounded by the fact that there's no anonymous classes or stubbing framework in MATLAB, so that's hard, but I want to make sure what I'm doing is conceptually clear before I go off and write a stubbing framework in MATLAB.

0 投票
1 回答
728 浏览

xml - 外部化junit存根对象

在我的项目中,我们创建了用于在 java(factories) 本身中测试 junit 的存根文件。但是,我们必须将这些存根外部化。在看到许多序列化器/反序列化器之后,我们决定使用 XStream 来序列化和反序列化这些存根对象。XStream就像一个魅力。它非常擅长它声称的内容。以前,我们有一个工厂类,比如 AFactory,它生成测试不同测试用例所需的所有存根。现在,当外部化每个生成的存根时,我们遇到了障碍。我们必须为工厂生产的每个存根创建 1 个 xml 文件。
例如,

现在,当尝试将此存根移动到外部文件时,我们必须为创建的每个存根创建 1 个 xml 文件(A-stub1.xml、A-stub2.xml 和 A-stub3.xml)。这种方法的问题在于,它会导致 xml 存根文件的扩散。

我在想,如何将与单个 bean 类相关的所有存根保存在单个 xml 文件中。

是否有一个框架允许您将 xml 表示中的所有存根保存在一个 xml 文件中,如上?或者你们建议应该坚持的正确方法是什么?

0 投票
1 回答
2716 浏览

ruby-on-rails - 在 Ruby on Rails 应用程序中使用 RSpec 时,存根 Mock 对象的 #class 方法是否合法?

我想存根模拟对象的#class 方法:

在这个程序的第 5 行,我存根 #class 方法,以便允许像 @john.class.name 这样的东西。这是正确的方法吗?会不会有什么不好的副作用?

编辑:

Letter 类如下所示:

我想知道 ActiveRecord 是否通过to.class.name或通过其他方式获取 :to 字段的类名。也许这就是 ActiveRecord::Base 的 class_name 方法的用途?

0 投票
2 回答
1544 浏览

.net - 必要时从 USB 驱动器安装 .NET 框架

我们有一个将通过 USB 驱动器分发的 .NET 应用程序。最终用户将连接驱动器并双击 EXE(一个 .NET exe)运行它而不安装它。

现在的问题是,如果未安装 .NET,我们希望触发 .NET 安装程序,而不是显示 MS 放在那里的默认下载消息。安装程序将通过 USB 与应用程序一起分发。

一种方法可能是替换 .NET 可执行文件中的 PE 存根文件。但是我没有在 C# 编译器中看到和 /STUB 开关(尽管 C 编译器有它)。

还有什么人能想到的吗?

更新:感谢 Tim Robinson,我了解到 Windows 不处理 PE 存根文件。因此,ClickOnce 解决方案似乎是唯一可行的解​​决方案。我将检查 ClickOnce。

0 投票
15 回答
661173 浏览

java - 由于对所需库 rt.jar 的限制,对类的访问限制?

我正在尝试编译由IBM 的WSDL2JavaJava5上创建的Java 1.4代码,而无需重新创建存根,并在Eclipse中看到了这个错误。 我假设只要运行时可用(它们是),生成的存根就应该编译。
jars

Access restriction: The type QName is not accessible due to restriction on required library C:\Program Files\Java\jdk1.5.0_16\jre\lib\rt.jar

完整的类名是javax.xml.namespace.QName

这里到底发生了什么?这是我试图用香肠重构猪的情况吗?我最好重新创建存根吗?

0 投票
2 回答
12878 浏览

java - 如何存根/模拟 JDBC ResultSet 以同时使用 Java 5 和 6?

我正在测试我的一些使用 JDBC 语句等的类,现在我遇到了 JDBC ResultSet 接口的问题:

该软件应该在 Java 5 和 Java 6 上运行,因此测试也应该在这两个版本上运行。不幸的是,Java 6 引入了一堆新方法(这仍然不是什么大问题),它们返回一堆新的类/接口,这使得事情变得更加困难。(参见Frank Carver 的 Punch Barrel - Java 6 打破 JDBC例如)

在找出这些版本差异之前,我考虑了存根和模拟之间的问题,最终选择了存根,因为 ResultSet 具有内部状态(处理当前行),这对我来说更自然地使用存根,如下所示:

但是,如果我不引入新方法 as public NClob getNClob(int columnIndex),则该类在 Java 6 下被破坏 - 如果我在 Java 5 下将它们引入该类。

我可以使用mockito(例如)回调来让状态反映在返回值中,但是有人有其他的——也许更好的——想法吗?

0 投票
5 回答
6301 浏览

c# - 在 RhinoMocks 中模拟一个返回密封类的方法

运行此代码:

什么时候

throws NotSupportedException - “无法创建密封类的模拟”。我理解为什么你不能模拟一个密封类(尽管 TypeMock 中有解决方案),但是模拟一个返回密封类(字符串)的类有什么问题?

0 投票
6 回答
2449 浏览

c# - 为 Web 服务创建 Java 存根的库

我想知道是否有人可以推荐一个好的库来生成 java webservices 存根作为客户端。

目前我正在使用一个产品,它嵌入了一个只需要 WSDL 的生成器,然后创建所需的类和方法。

我的问题是它会引发警告,并且不会为我尝试使用的某些 Web 服务创建任何方法。

真正的问题是它没有解释问题是什么(所以我可以和 web 服务的所有者一起修改它),也不让我修改输出,这样我就可以自己解决问题。

然而,网络服务的所有者(因为这发生在几个不同的 ws 上)说他们的 ws 运行良好,实际上如果我使用soapUI,它们实际上可以工作!!!

我快速浏览了soapUI它自己使用的库,我看起来很有希望。

我知道有Axis 应该做这项工作,但我担心的是我失败的生成器已经在使用那个库(这让我觉得它会再次失败)

最近我不知道这两个库是生成java源存根还是只有类似的方法

当我想要的是这样的:

那么,任何人都可以推荐一个好的ws 存根生成器吗?

我即将自己手动编码,但肯定需要几天才能被接受

0 投票
7 回答
24977 浏览

python - 使用基于日期/时间的对象进行 Django 单元测试

假设我有以下Event模型:

我想Event.is_over()通过创建一个在未来结束的事件(今天 + 1 或其他)进行测试,并存根日期和时间,以便系统认为我们已经达到了未来的日期。

就python而言,我希望能够存根所有系统时间对象。这包括datetime.date.today()datetime.datetime.now()和任何其他标准日期/时间对象。

这样做的标准方法是什么?

0 投票
3 回答
3060 浏览

java - 你如何在java中为单元测试存根单个方法?

我在一个写入某个字符串的类中有一个方法,它调用另一个执行相同操作的方法。就像是:

出于单元测试的目的,我想分别测试 foo 和 bar。当我调用 foo() 或用另一种方法替换它时,有什么方法可以防止 bar 运行?