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

c# - MS VisualStudio 2012 中的 ShimNotSupportedException

我只是想熟悉 Visual Studio 2012 RC 中新的 Fakes 隔离框架,但我因此面临ShimNotSupportedExceptions.
在第一次尝试时,我尝试将委托连接到的每个单一 shim 方法ShimNotSupportedException在尝试运行/调试测试时都抛出了一个。

这是相应的堆栈跟踪:

GetFoo_ValidBar_ReturnsBaz 测试方法引发了异常:Microsoft.QualityTools.Testing.Fakes.Shims.ShimNotSupportedException: System.DateTime at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InvokeEvent(T value, Action1 eh) at Microsoft.QualityTools。 Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.OnAttachedUnsupportedMethod(MethodBase 方法) 在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.CheckInstrumentation(MethodBase 方法) 在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InternalAttachDetour(Object optionalReceiver, MethodBase方法,委托 detourDelegate) 在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.AttachDetour(Object optionalReceiver,Microsoft.QualityTools.Testing.Testing.Fakes.Shims.ShimRuntime.SetShimMethod(Delegate optionalStub, Object optionalReceiver, MethodBase method) 在 Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType) 的 MethodBase 方法,委托 detourDelegate) , Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes) at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShimPublicStatic(Delegate optionalStub, Type receiverType, String name, Type returnType, Type[] parameterTypes)在 BazTests.cs 中的 GetFoo_ValidBar_ReturnsBaz() 处的 System.Fakes.ShimDateTime.set_NowGet(Func'1 value):第 48 行。MethodBase 方法)在 Microsoft.QualityTools.Testing.Fakes 的 Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType, Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes)在 Microsoft.QualityTools.Testing.Fakes。 Shims.ShimRuntime.SetShimPublicStatic(Delegate optionalStub, Type receiverType, String name, Type returnType, Type[] parameterTypes) at System.Fakes.ShimDateTime.set_NowGet(Func'1 value) at GetFoo_ValidBar_ReturnsBaz() in BazTests.cs:第 48 行。MethodBase 方法)在 Microsoft.QualityTools.Testing.Fakes 的 Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType, Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes)在 Microsoft.QualityTools.Testing.Fakes。 Shims.ShimRuntime.SetShimPublicStatic(Delegate optionalStub, Type receiverType, String name, Type returnType, Type[] parameterTypes) at System.Fakes.ShimDateTime.set_NowGet(Func'1 value) at GetFoo_ValidBar_ReturnsBaz() in BazTests.cs:第 48 行。在 BazTests.cs 的 GetFoo_ValidBar_ReturnsBaz() 中的 System.Fakes.ShimDateTime.set_NowGet(Func'1 value) 处键入接收器类型、字符串名称、类型 returnType、Type[] parameterTypes):第 48 行。在 BazTests.cs 的 GetFoo_ValidBar_ReturnsBaz() 中的 System.Fakes.ShimDateTime.set_NowGet(Func'1 value) 处键入接收器类型、字符串名称、类型 returnType、Type[] parameterTypes):第 48 行。

在阅读了我在 MSDN 上找到的处理此问题的两个线程后,我按照他们的说明(关闭 CodeCoverage,删除 .testsettings 文件)对我不起作用!
尽管如此,我还是找到了解决此问题的方法:
首先从测试资源管理器运行所有测试(而不是直接在编码区域之外使用“MSTest 测试(单击以运行)”按钮),一切正常并且没有抛出异常。之后我什至可以调试测试并且分配给 shim 方法的工作与预期一样。
这也适用于我使用的所有以下垫片。
但是现在我在尝试实现 MS Enterprise Library 的伪造品以进行数据库访问时又遇到了同样的问题。

这是测试的样子:

前两个 shim 分配(ShimFoo 和 ShimQux)按预期工作。但是 ShimDatabaseFactory.CreateDatabaseString (这应该使 DatabaseFactory.CreateDatabase(string) 在尝试创建新数据库实例时返回一个存根数据库)再次引发 ShimNotSupportedException。我就是不知道为什么!
你知道这里出了什么问题吗?

我将不胜感激对此的任何意见。

谢谢,
本杰明

0 投票
1 回答
246 浏览

javascript - 在扩展中使用 js-ctypes 会导致 firefox 崩溃

我创建了将使用 js-ctypes 调用本机 DLL 函数的扩展。我编写了本机 DLL(用 C 编写),它导出了一个由扩展 javascript 调用的 C 函数。我正在尝试从我的本机 DLL 加载另一个 DLL(用 c++ 编写)。

我的问题是,如果我安装扩展程序,Firefox 在启动时会崩溃。

请帮我解决问题。

0 投票
1 回答
351 浏览

visual-studio-2010 - 如何解决 VS2012 Fakes 框架中的方法名冲突

我正在使用 VS2012 Fakes 和 MSTEST 框架进行单元测试。我有第三方 dll,我需要伪造它。但是,dll 中有一个方法 (getItemAt(int)) 似乎与 Fakes 中存在的方法冲突。

我在编译期间收到的错误消息是:

错误 2 'MyObject.Fakes.ShimList' 类型已经包含 'get_ItemAtInt32' 的定义 [D:\Dev\Test\obj\Debug\Fakes\o\f.csproj] D:\Dev\Teste\f.cs 6933 111测试

有什么解决方案可以绕过此错误以继续使用 Fakes?

0 投票
1 回答
2317 浏览

javascript - 需要垫片设置 - jquery.flot/jquery.flot.selection

所以我正在使用 jquery.flot 和 jquery.flot.selection 并且因为 define({... 异步加载模块我遇到了一个问题,因为选择插件试图将自己推入 $.plot.plugins (创建由 jquery.flot),但此时 $.plot.plugins 仍未定义。

我发现 require.config 中的“shim”参数应该可以帮助我解决这个问题,但我没有运气......所以这是概要...... jquery.flot 创建 $.plot 并且 jquery.flot.selection 将自身添加到 $ .plot.plugins

我试过的...

我的插件看起来像这样..

我也试过

我应该怎么办???

0 投票
1 回答
496 浏览

javascript - HTML5 shiv/shim JS 脚本的最常见用例

我经常看到有人建议我包含HTML5 shiv JS 脚本以使 HTML5 在 Internet Explorer 中工作,但我无法找到关于这将涵盖的最常见用例的明确解释。

有人会给出为什么需要这个 JS 脚本的常见场景吗?

此外,它是否需要放在标签<head>底部,或者我可以将它与我的 JS 的其余部分放在标签底部,<body>这样它就不会阻塞 UI 线程?

0 投票
1 回答
1354 浏览

c# - 使用带有工厂实例方法的 Microsoft Fakes

我有一个看起来像这样的类:

}

然后,我想制作一个垫片并想使用 IsBigger 方法,但默认情况下它返回 false。在这种情况下如何调用基本方法?

测试是这样的:

0 投票
1 回答
157 浏览

html - 使用 jQuery.val() 和 Modernizr Webshims Lib 检索值时遇到问题

我正在使用 Modernizr plus Webshims使我能够为尚不支持该选项的浏览器使用 type="number" 类型。它工作正常,但我无法使用 jQuery 访问数字输入字段的值 [稍后我将分享我正在使用的代码]。

在 Chrome(不需要 polyfill)中,我可以使用 val() 检索值。在 Firefox(确实需要 polyfill)中,如果我不使用 webshim polyfill,我也可以检索该值。

但是,一旦我使用 webshims,我就无法再检索该值。

这是我正在使用的代码:

在标签之前,我有以下内容:

在内容部分,我添加了以下内容:

知道如何让它工作吗?

0 投票
3 回答
2736 浏览

javascript - 规范化数组方法和返回值

是否有任何 JavaScript 数组库可以规范化数组返回值和突变?我认为 JavaScript Array API 非常不一致。

一些方法会改变数组:

有些不:

有些返回对变异数组的引用:

有些只是返回未定义:

我想要的是总是改变数组并总是返回相同的数组,所以我可以有某种一致性,也可以链接。例如:

我尝试了一些简单的片段,例如:

这适用于大多数突变方法,但存在问题。例如,我需要为每个不改变原始数组的方法编写自定义原型。

所以当我这样做的时候,我一直在想,也许这以前已经做过了?是否已经有任何轻量级数组库可以做到这一点?如果该库还为旧浏览器的新 JavaScript 1.6 方法添加填充程序,那就太好了。

0 投票
1 回答
100 浏览

javascript - 对象(这个)做什么?

我注意到在几个 MDN 数组方法 shims 中,例如第 7 行的这个,它们使用以下语法:

this数组在哪里。它不仅没有在我的验证器中暗示,而且我也不知道它的作用。

任何人都可以发光吗?

0 投票
3 回答
951 浏览

javascript - 在 jquery/mootools/prototype 中使用 ES5 shim

我偶然发现了这个项目:https ://github.com/termi/ES5-DOM-SHIM ,它在包括旧 IE 在内的所有浏览器中提供了几乎完整的 ES5 支持。

我一直在纯 JS 项目中使用它,但现在我必须在项目中包含 jquery/mootools/prototype(使用 High Charts)。

即使只是包含 jquery 脚本,也会导致在 IE8 中与此 shim 一起引发错误。我怎样才能保持两全其美?

我的文档头如下所示: