问题标签 [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.
c# - 如何在 Process.Start 上使用 Microsoft Fakes 程序集
我想模拟System.Diagnostics.Process.Start调用,所以我为System Assembly 添加了一个 Fakes Assembly。
问题是Start是System.Diagnostics.Process上的一个静态方法,所以我没有得到一个 shim 来支持 Start 方法的委托。
这样做的正确方法是什么?
javascript - 为什么在我使用它时任何 classList shim 都不能在 IE9 中工作?
我正在使用classList.add
和classList.remove
在我的小地图定位器中。(看来,我必须这样做,因为 className 不适用于 SVG 元素。)您可以在 codepen 的 JS 的第 184 和 194 行看到我是如何使用它们的。IE9 不支持 classList,所以我尝试了许多不同的垫片(一、二、三)。
它们似乎都不适用于我的代码在 IE9 中。如果我将它们加载到只有一两行代码的测试小提琴中,它们确实可以工作,但不是我的全部内容,因为它存在(而且我还没有将它重构为好的和面向对象的东西,所以它非常糟糕) .
我的第一个想法是问题出在某种程度上,因为我正在使用jQuery().get()
. 但在 IE9 控制台中,我可以做到document.getElementById
,但同样失败。
这里到底发生了什么?
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 或其他东西)我不必解析/重绘整个覆盖区域?
javascript - 删除RequireJS中未使用的垫片配置?
好的,所以我的问题是我希望能够自动删除我为 RequireJS 设置的 shim 配置的一部分;我没有加载整个缩小的 Bootstrap 文件,而是将其拆分为不同的插件,这样当我的应用程序使用较少的 Bootstrap 组件时,我就可以从文件大小减少中受益。例如:
虽然r.js
优化器正确识别出我只是在使用bootstrap/dropdown
,但它仍然包含未出现在生产代码中的文件的 shim 配置。所以我的问题是我可以自动摆脱未使用的 shim 文件吗?我正在使用grunt-contrib-requirejs
实际优化并且对此没有任何问题。基于 Grunt 的解决方案会更好,但我对其他任何事情都持开放态度。谢谢。
c# - 如何重构以避免使用 Shim?
我对单元测试很陌生,并且正在探索 Microsoft Fakes 框架 - 主要是因为它是免费的,它允许我使用 Emulators 包轻松模拟 SharePoint 对象。我在 SO 和其他地方看到过各种提及 Shims 是邪恶的,我或多或少地理解为什么。我没有得到的是如何在一种特定情况下避免它们 - 换句话说,“我应该如何重构我的代码以避免不得不使用垫片?”
对于有问题的代码,我有一个 JobProcessor 对象,它具有属性和方法,其中一些是私有的,因为它们只能从公共 Execute 方法调用。我想测试一下,当调用 Execute 并且有一个 Job 可用时,它的 Process 方法被调用,因为我需要做一些额外的日志记录。
以下是相关代码:
如果从测试中调用 ProcessJob,我需要做一些额外的事情,所以我在我的测试方法中设置了一个存根来做这些额外的事情:
我正在其他地方测试 ProcessJob 方法本身,所以我不在乎它除了我的额外内容之外什么都不做。据我了解,我现在需要设置一个 Shim 以让 JobProcessor(我的测试系统)中的私有方法 GetJobsToProcess 返回我的假作业,以便调用我的存根方法:
在这种情况下,我应该如何避免使用 Shim?有关系吗?
谢谢。
c# - 从 shim 方法调用原始方法
在为 BCL(或任何库)中的类型成员创建 shim 时。我们经常面临这样一种情况,我们想要调用我们已经覆盖的原始方法(无论是在 shim 委托内部还是外部)。例如:
在上面的代码中,当调用 DateTime.Now 时,我们要做的就是返回比实际日期少一天的时间。也许这看起来像是一个人为的例子,所以其他(更)现实的场景是
- 能够捕获和验证传递给特定方法的参数值。
- 能够计算被测代码访问特定方法/属性的次数。
我在实际应用程序中遇到了最后一种情况,但在 SO 上找不到 Fakes 的答案。但是,在深入研究 Fakes 文档后,我找到了答案,因此将其与社区的问题一起发布。
jquery - Bootstrap - 未捕获的类型错误:无法读取未定义的属性“fn”
我正在为我的公司项目使用 jquery、backbonejs、underscorejs 和 bootstrap。有时我在 chrome 中遇到此错误。
未捕获的类型错误:无法读取未定义的属性“fn”
我的垫片在我的 main.js 中是这样的
我已经为jquery、underscorejs 和backbonejs 插入了.noConflict()。
我的 app.js
这是我的 chrome 截图
它有点像与引导程序有关。
提前非常感谢。
javascript - 没有原型的 Array.indexOf 垫片
什么是通用 indexOf 垫片函数,它需要一个数组和一个值来匹配,在可用的地方利用本机函数?
c++ - 在 Visual Studio 中测试时如何覆盖标准 C++ 函数?
我正在使用 Visual Studio 2013 单元测试。我的代码使用time()
函数来生成一些对象名称,因此在测试时很难确保一致的行为。
如果是 C#,我可以使用 shims,如文章http://msdn.microsoft.com/en-us/library/hh549175.aspx “开始使用 shims”部分中所示。
有什么技术可以time()
在我的 C++ 单元测试期间重新定义调用吗?
javascript - 用 browserify 填充一个 jQuery 插件
嗨,我正在使用 grunt browserify 任务来设置我的代码,我已经在 jQuery 中填充,现在我正在尝试包含 jquery.tablesorter。
jquery插件可以这样与browserify一起使用吗?