问题标签 [shim]

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 投票
0 回答
1011 浏览

ruby-on-rails - Bundler 因 Rbenv 失败

我继承了一个 rails 2.3.2 应用程序,并让它在 rbenv 下使用 ruby​​ 1.8.7 工作,包括一些旧版本的其他 gems 和软件。

现在我生成了一个 Gemfile 并尝试通过对其运行任何捆绑命令来验证它,例如捆绑检查、安装等,但是这些操作中的任何一个都失败了。我安装了 rbenv bundler 插件,这使它看起来不那么严重,但我仍然无法弄清楚。

我的捆绑器安装:

红宝石:

Rbenv 现在也给我带来了问题:

捆绑器不应该有垫片吗?似乎直接调用了bundler。

我搞不清楚了。如果有人可以帮助我,我会很高兴。

ps:我也刚刚发现:

0 投票
1 回答
2421 浏览

unit-testing - 使用 Shim 测试私有方法

我正在尝试使用 Shim 来测试我在这个名为 DataSyncCore 的类中的私有方法之一。抱歉,如果这太微不足道了,因为我是 shim 的新手并且无法弄清楚为什么这会给我一个错误,说“属性或索引器 GetEnvironmentString 不能在这种情况下使用,因为它缺少访问器。如何解决这个问题?

这是我的单元测试:

0 投票
1 回答
491 浏览

requirejs - RequireJS 模块尝试加载 shim'ed 模块

我在尝试为我组织中的另一个团队编写的一些 javascript 代码创建 RequireJS shim 时遇到问题。该脚本通过一个 noraml HTML 脚本加载,如下所示:

我的 main.js 包含以下内容:

而且我尝试过以多种方式访问​​自定义模块,但这是我当前的代码:

但是每次页面/应用程序加载时,我都会从 RequireJS 收到一个错误,表明它无法加载app/MyCustomModule.js(我可以在控制台中看到 404 错误,它试图从服务器请求文件)。我究竟做错了什么?

0 投票
1 回答
7289 浏览

unit-testing - 使用 Microsoft Fakes 和静态通用方法填充

我需要为单元测试填充一个静态通用方法。但是,我似乎无法让 Fakes 创建 shim 对象。有谁知道如何做到这一点?

特别是,我想填充 Newtonsoft 的 JsonConvert.DeserializeObject<>()

0 投票
1 回答
961 浏览

linux - 在 Linux/Unix 中转发 DLL 的等价物是什么?

我有一个动态库,可以跨主要版本更改名称,即版本 3 被命名为 lib3,版本 4 被命名为 lib4,依此类推。

我需要提供一个 shim lib3,它允许旧应用程序以透明的方式使用新库,并且大多数导出的函数不会跨版本更改,因此转发 DLL 看起来非常适合 Windows 上的任务。

Linux/Unix 上是否有等价的东西?

0 投票
2 回答
4357 浏览

c# - 填空方法

我有以下(遗留的,继承自前辈)VB.Net(框架2.0)类和方法,它们在异常上创建系统事件日志:

我正在尝试在 C#(框架 4.5)单元测试项目中对此进行测试,并且部分逻辑要求是aValue用逗号分隔的两个数字 - 如果不是,则抛出异常和事件日志。

我设置了以下单元测试以确保正确抛出异常:

这一切都很好,测试通过了,因为逻辑MyMethod导致了预期的异常。但是,我不希望写入事件日志。那么,我如何 ShimMyUtitlityClass来拦截呼叫LogError 而不做任何事情呢?

我见过的所有 Fakes 示例都是针对返回假值的方法(并且都是C# 编写的!)当我尝试实现这样的模式时,它会给出一个错误,即 LogError 没有 getter。

0 投票
1 回答
347 浏览

c# - 如何通过 Microsoft Fakes 使用 ConcurrentDictionary (C#) 填充长外部依赖项?

在我需要测试的代码中发现了这样的外部依赖:

var something = GConfig.SConfig[Type.ServiceType1].Names;

这部分的代码是这样的:

我需要消除这种依赖,但我自己找不到完整的解决方案,只有部分:

对于 GConfigIt(和匀场名称):Fakes.ShimGConfigIt.AllInstances.NamesGet

对于匀场 SConfig:Fakes.ShimGConfig.AllInstances.SConfigGet

但我找不到连接,如何完全填充它。

PS 我只是一名测试人员,不能更改现有代码。为了进行更改,我需要说服开发人员这样做(即 GConfig 的额外接口),但他们必须确保这不仅仅是为了“轻松测试”或“测试测试”而进行的更改,他们确实需要这样做。

0 投票
2 回答
4387 浏览

c# - 为什么 Fakes 不能从预建的 Fakes 项目中正确引用 Fakes dll?

我在尝试从单独的项目中引用mscorlib 假 DLL时遇到问题,如下所述。

我有许多 VS12 解决方案,我正在使用 MS Fakes 为其编写单元测试。根据以下 URL 中的建议,我决定为我的假 Dll 创建一个项目:Microsoft Fakes 中的代码生成、编译和命名约定。这个想法是伪造 DLL 的位置将被本地化,我不需要在我的测试项目中散布大量伪造的 DLL。(我将其称为普通假货库。)

在我当前的单元测试中,我使用来自PresentationCore,System.ManagementSystem. 但是,我使用的 System shims 实际上是 in mscorlib.dll,更具体地说是 Convert (静态类)和 DriveInfo (密封类)。因为我只需要 mscorlib 中的这两个类(现在),所以我为 mscorlib 创建了以下 .fakes 文件:

对于 PresentationCore 和 SystemManagement,我有类似的 .fakes 文件,这些文件可以清除然后按名称添加类。

但是,在我的测试项目中,当我从我的 common fakes 库中添加 mscorlib.4.0.0.0.Fakes DLL 的引用时,使用 Convert 和 DriveInfo 垫片的测试不会运行。相反,测试方法会引发 Microsoft.QualityTools.Testing.Fakes.Shims.ShimNotSupportedException,命名不受支持的 shimmed 类。使用 PresentationCore 和 System.Management 功能的测试在引用通用假库时仍然有效。

但是,如果我在我的测试项目中直接(以及间接添加 mscorlib)为 System 添加 Fakes 程序集,请在我的测试项目中创建完全相同的 mscorlib.fakes 文件,并添加对本地mscorlib.4.0.0.0.Fakes Dll 的引用,即链接到常见假货库时引发异常的测试运行时不会出现故障。

我使用对象浏览器查看了 common fakes 库中的 mscorlib 伪造 DLL,并将其与本地构建的 DLL 进行了比较,它们似乎是相同的。

有谁知道为什么在 common fakes 库中引用 mscorlib fake 不起作用?

0 投票
1 回答
230 浏览

unit-testing - ShimSPWeb().LocaleGet 不可用?

我已经开始研究 VisualStudio 2012 中的新功能,您可以在其中添加虚假的 dll 程序集以进行单元测试。我正在使用 SharePoint 2010,现在我们都很难对依赖于 SharePoint API 的代码进行单元测试。

我为 Microsoft.SharePoint 添加了一个假程序集,效果很好,但我到了需要覆盖方法的地步SPWeb.Locale。我以为这很容易。我以为会有一种方法,ShimSPWeb.LocaleGet但没有。

Locale这是我对我的唯一选择ShimSPWeb

在此处输入图像描述

简而言之:应该有一个shimWeb.LocaleGet可用的。

0 投票
1 回答
766 浏览

javascript - IndexedDBShim.js 错误:JavaScript 运行时错误:在严格模式下不允许分配给只读属性

我正在试验 IndexedDB jquery API,因为 indexedDB 与 safari / ipad 不兼容。我刚刚开始使用它并在仅运行 HTML 并且我无法使用文件中的任何内容时出现此错误。我所指的文件是IndexedDBShim

我的 html 看起来像

Test() 函数中没有任何内容。我得到的错误是: 0x800a13b5 - JavaScript 运行时错误: 在 window.indexedDB = window.indexedDB || 的第 1653 行的严格模式下不允许分配给只读属性 window.webkitIndexedDB || window.mozIndexedDB || window.oIndexedDB || 窗口.msIndexedDB;

我用错了吗?

谢谢