问题标签 [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# - MS VisualStudio 2012 中的 ShimNotSupportedException
我只是想熟悉 Visual Studio 2012 RC 中新的 Fakes 隔离框架,但我因此面临ShimNotSupportedException
s.
在第一次尝试时,我尝试将委托连接到的每个单一 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。我就是不知道为什么!
你知道这里出了什么问题吗?
我将不胜感激对此的任何意见。
谢谢,
本杰明
javascript - 在扩展中使用 js-ctypes 会导致 firefox 崩溃
我创建了将使用 js-ctypes 调用本机 DLL 函数的扩展。我编写了本机 DLL(用 C 编写),它导出了一个由扩展 javascript 调用的 C 函数。我正在尝试从我的本机 DLL 加载另一个 DLL(用 c++ 编写)。
我的问题是,如果我安装扩展程序,Firefox 在启动时会崩溃。
请帮我解决问题。
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?
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
我试过的...
还
我的插件看起来像这样..
我也试过
我应该怎么办???
javascript - HTML5 shiv/shim JS 脚本的最常见用例
我经常看到有人建议我包含HTML5 shiv JS 脚本以使 HTML5 在 Internet Explorer 中工作,但我无法找到关于这将涵盖的最常见用例的明确解释。
有人会给出为什么需要这个 JS 脚本的常见场景吗?
此外,它是否需要放在标签<head>
底部,或者我可以将它与我的 JS 的其余部分放在标签底部,<body>
这样它就不会阻塞 UI 线程?
c# - 使用带有工厂实例方法的 Microsoft Fakes
我有一个看起来像这样的类:
}
然后,我想制作一个垫片并想使用 IsBigger 方法,但默认情况下它返回 false。在这种情况下如何调用基本方法?
测试是这样的:
html - 使用 jQuery.val() 和 Modernizr Webshims Lib 检索值时遇到问题
我正在使用 Modernizr plus Webshims使我能够为尚不支持该选项的浏览器使用 type="number" 类型。它工作正常,但我无法使用 jQuery 访问数字输入字段的值 [稍后我将分享我正在使用的代码]。
在 Chrome(不需要 polyfill)中,我可以使用 val() 检索值。在 Firefox(确实需要 polyfill)中,如果我不使用 webshim polyfill,我也可以检索该值。
但是,一旦我使用 webshims,我就无法再检索该值。
这是我正在使用的代码:
在标签之前,我有以下内容:
在内容部分,我添加了以下内容:
知道如何让它工作吗?
javascript - 规范化数组方法和返回值
是否有任何 JavaScript 数组库可以规范化数组返回值和突变?我认为 JavaScript Array API 非常不一致。
一些方法会改变数组:
有些不:
有些返回对变异数组的引用:
有些只是返回未定义:
我想要的是总是改变数组并总是返回相同的数组,所以我可以有某种一致性,也可以链接。例如:
我尝试了一些简单的片段,例如:
这适用于大多数突变方法,但存在问题。例如,我需要为每个不改变原始数组的方法编写自定义原型。
所以当我这样做的时候,我一直在想,也许这以前已经做过了?是否已经有任何轻量级数组库可以做到这一点?如果该库还为旧浏览器的新 JavaScript 1.6 方法添加填充程序,那就太好了。
javascript - 在 jquery/mootools/prototype 中使用 ES5 shim
我偶然发现了这个项目:https ://github.com/termi/ES5-DOM-SHIM ,它在包括旧 IE 在内的所有浏览器中提供了几乎完整的 ES5 支持。
我一直在纯 JS 项目中使用它,但现在我必须在项目中包含 jquery/mootools/prototype(使用 High Charts)。
即使只是包含 jquery 脚本,也会导致在 IE8 中与此 shim 一起引发错误。我怎样才能保持两全其美?
我的文档头如下所示: