问题标签 [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 投票
2 回答
2599 浏览

c# - 如何在 Process.Start 上使用 Microsoft Fakes 程序集

我想模拟System.Diagnostics.Process.Start调用,所以我为System Assembly 添加了一个 Fakes Assembly。

问题是Start是System.Diagnostics.Process上的一个静态方法,所以我没有得到一个 shim 来支持 Start 方法的委托。

这样做的正确方法是什么?

0 投票
0 回答
614 浏览

javascript - 为什么在我使用它时任何 classList shim 都不能在 IE9 中工作?

这是一个 Codepen 的东西。

我正在使用classList.addclassList.remove在我的小地图定位器中。(看来,我必须这样做,因为 className 不适用于 SVG 元素。)您可以在 codepen 的 JS 的第 184 和 194 行看到我是如何使用它们的。IE9 不支持 classList,所以我尝试了许多不同的垫片()。

它们似乎都不适用于我的代码在 IE9 中。如果我将它们加载到只有一两行代码的测试小提琴中,它们确实可以工作,但不是我的全部内容,因为它存在(而且我还没有将它重构为好的和面向对象的东西,所以它非常糟糕) .

我的第一个想法是问题出在某种程度上,因为我正在使用jQuery().get(). 但在 IE9 控制台中,我可以做到document.getElementById,但同样失败。

这里到底发生了什么?

0 投票
3 回答
1290 浏览

css - 等效于其他浏览器中的`-moz-element`?

我想创建一个不透明模糊覆盖,类似于 Windows Aero 或 iOS7。不幸的是filter: blur()orfilter: url(#svgBlur)属性只能应用于元素,而不是它背后的内容。

为了解决这个问题,我们需要一个模糊的背景副本。这在 FX 中使用background: -moz-element(#elementId)实验性 CSS 属性是可能的。使用它我只能在FX中获得我想要的效果。

关于解决模糊问题还有其他 问题,其中一种解决方案似乎是使用html2Canvas插件。

然而,这是重新创建整个模糊内容,包括手动重新创建的样式等。这是非常令人印象深刻的作品,但对于这种效果来说,它似乎是巨大的矫枉过正(无论是在性能上还是在尺寸上)。

我想做的是创建某种垫片,仅用于-moz-element. 看起来应该可以使用 SVGforeignObject,但是如果您的 HTML 不是有效的 XML,那么它既有安全问题,也会失败。

有没有什么方法可以模拟-moz-element(使用画布、SVG 或其他东西)我不必解析/重绘整个覆盖区域?

0 投票
1 回答
738 浏览

javascript - 删除RequireJS中未使用的垫片配置?

好的,所以我的问题是我希望能够自动删除我为 RequireJS 设置的 shim 配置的一部分;我没有加载整个缩小的 Bootstrap 文件,而是将其拆分为不同的插件,这样当我的应用程序使用较少的 Bootstrap 组件时,我就可以从文件大小减少中受益。例如:

虽然r.js优化器正确识别出我只是在使用bootstrap/dropdown,但它仍然包含未出现在生产代码中的文件的 shim 配置。所以我的问题是我可以自动摆脱未使用的 shim 文件吗?我正在使用grunt-contrib-requirejs实际优化并且对此没有任何问题。基于 Grunt 的解决方案会更好,但我对其他任何事情都持开放态度。谢谢。

0 投票
1 回答
411 浏览

c# - 如何重构以避免使用 Shim?

我对单元测试很陌生,并且正在探索 Microsoft Fakes 框架 - 主要是因为它是免费的,它允许我使用 Emulators 包轻松模拟 SharePoint 对象。我在 SO 和其他地方看到过各种提及 Shims 是邪恶的,我或多或少地理解为什么。我没有得到的是如何在一种特定情况下避免它们 - 换句话说,“我应该如何重构我的代码以避免不得不使用垫片?”

对于有问题的代码,我有一个 JobProcessor 对象,它具有属性和方法,其中一些是私有的,因为它们只能从公共 Execute 方法调用。我想测试一下,当调用 Execute 并且有一个 Job 可用时,它的 Process 方法被调用,因为我需要做一些额外的日志记录。

以下是相关代码:

如果从测试中调用 ProcessJob,我需要做一些额外的事情,所以我在我的测试方法中设置了一个存根来做这些额外的事情:

我正在其他地方测试 ProcessJob 方法本身,所以我不在乎它除了我的额外内容之外什么都不做。据我了解,我现在需要设置一个 Shim 以让 JobProcessor(我的测试系统)中的私有方法 GetJobsToProcess 返回我的假作业,以便调用我的存根方法:

在这种情况下,我应该如何避免使用 Shim?有关系吗?

谢谢。

0 投票
1 回答
4280 浏览

c# - 从 shim 方法调用原始方法

在为 BCL(或任何库)中的类型成员创建 shim 时。我们经常面临这样一种情况,我们想要调用我们已经覆盖的原始方法(无论是在 shim 委托内部还是外部)。例如:

在上面的代码中,当调用 DateTime.Now 时,我们要做的就是返回比实际日期少一天的时间。也许这看起来像是一个人为的例子,所以其他(更)现实的场景是

  1. 能够捕获和验证传递给特定方法的参数值。
  2. 能够计算被测代码访问特定方法/属性的次数。

我在实际应用程序中遇到了最后一种情况,但在 SO 上找不到 Fakes 的答案。但是,在深入研究 Fakes 文档后,我找到了答案,因此将其与社区的问题一起发布。

0 投票
10 回答
183440 浏览

jquery - Bootstrap - 未捕获的类型错误:无法读取未定义的属性“fn”

我正在为我的公司项目使用 jquery、backbonejs、underscorejs 和 bootstrap。有时我在 chrome 中遇到此错误。

未捕获的类型错误:无法读取未定义的属性“fn”

我的垫片在我的 main.js 中是这样的

我已经为jquery、underscorejs 和backbonejs 插入了.noConflict()。

我的 app.js

这是我的 chrome 截图 在此处输入图像描述

它有点像与引导程序有关。

提前非常感谢。

0 投票
1 回答
117 浏览

javascript - 没有原型的 Array.indexOf 垫片

什么是通用 indexOf 垫片函数,它需要一个数组和一个值来匹配,在可用的地方利用本机函数?

0 投票
4 回答
3271 浏览

c++ - 在 Visual Studio 中测试时如何覆盖标准 C++ 函数?

我正在使用 Visual Studio 2013 单元测试。我的代码使用time()函数来生成一些对象名称,因此在测试时很难确保一致的行为。

如果是 C#,我可以使用 shims,如文章http://msdn.microsoft.com/en-us/library/hh549175.aspx “开始使用 shims”部分中所示。

有什么技术可以time()在我的 C++ 单元测试期间重新定义调用吗?

0 投票
3 回答
12487 浏览

javascript - 用 browserify 填充一个 jQuery 插件

嗨,我正在使用 grunt browserify 任务来设置我的代码,我已经在 jQuery 中填充,现在我正在尝试包含 jquery.tablesorter。

jquery插件可以这样与browserify一起使用吗?