为以下命名空间使用 Fakes System.Text.RegularExpressions
Using Fakes for the following namespace System.Text.RegularExpressions
我喜欢使用 Microsoft Fakes 框架来拦截我无法控制的代码,例如 .net Framework 对象,例如 System.这也消除了为这些类型的对象编写包装器代码的需要。
然而,有时使用这个框架让我很沮丧。我正在使用以下命名空间 System.Text.RegularExpressions 并尝试为 Regex 对象设置垫片。但是,它不可用,原因尚不清楚。过去,我也使用过 Moles,遇到过类似的情况,有些东西没有被痣,但不确定为什么。我经常不得不写很多代码来解决这个问题,但我想尽可能避免这种情况。
如果有人有解决这个问题的方法,请提供解决方案。我想避免更改模拟和测试框架。
我成功了。
[TestMethod]
public void TestRegex()
{
using (ShimsContext.Create())
{
System.Text.RegularExpressions.Fakes.ShimRegex.IsMatchStringString = (s, s1) => true;
bool result = Regex.IsMatch("TestString", "NoMatch");
Console.WriteLine("regex result: " + result);
Assert.IsFalse(result);
}
}
还需要修改 "System.fakes" 文件。我发现 Fakes 框架的大部分问题都可以通过编辑这些配置文件来解决。不确定为什么需要在这种情况下明确添加它。
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="System" Version="4.0.0.0"/>
<ShimGeneration>
<Add FullName="System.Text.RegularExpressions.Regex"/>
</ShimGeneration>
</Fakes>
我喜欢使用 Microsoft Fakes 框架来拦截我无法控制的代码,例如 .net Framework 对象,例如 System.这也消除了为这些类型的对象编写包装器代码的需要。 然而,有时使用这个框架让我很沮丧。我正在使用以下命名空间 System.Text.RegularExpressions 并尝试为 Regex 对象设置垫片。但是,它不可用,原因尚不清楚。过去,我也使用过 Moles,遇到过类似的情况,有些东西没有被痣,但不确定为什么。我经常不得不写很多代码来解决这个问题,但我想尽可能避免这种情况。
如果有人有解决这个问题的方法,请提供解决方案。我想避免更改模拟和测试框架。
我成功了。
[TestMethod]
public void TestRegex()
{
using (ShimsContext.Create())
{
System.Text.RegularExpressions.Fakes.ShimRegex.IsMatchStringString = (s, s1) => true;
bool result = Regex.IsMatch("TestString", "NoMatch");
Console.WriteLine("regex result: " + result);
Assert.IsFalse(result);
}
}
还需要修改 "System.fakes" 文件。我发现 Fakes 框架的大部分问题都可以通过编辑这些配置文件来解决。不确定为什么需要在这种情况下明确添加它。
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="System" Version="4.0.0.0"/>
<ShimGeneration>
<Add FullName="System.Text.RegularExpressions.Regex"/>
</ShimGeneration>
</Fakes>