在 Shims 上下文中使用 Moles 存根方法
Use of Method stubbed in Moles inside a Shims context
最近在查看一个项目的自动化测试用例时,我遇到了一段代码,是这样的。
[TestMethod]
public void UpdateTtWebScResearchIdt()
{
using (ShimsContext.Create())
{
// Some code
SomeNamespace.Moles.MSubCom.StringFormatStringStringArray = (x, y) => "gLibErr";
//Assert
}
}
当我调试这个测试方法时,编译器显示如下错误
MolesInvalidOperationException。
在 Moles 方法被存根的那一行,即
SomeNamespace.Moles.MSubCom.StringFormatStringStringArray = (x, y) => "gLibErr";
详细消息显示了这一点。
“Moles 要求测试在检测过程中进行。
在 Visual Studio 单元测试中,将以下属性添加到单元测试方法中:
添加此属性
[TestMethod]
[HostType(Moles)]
public void Test()
{
...
}
扩展也可用于大多数单元测试框架。请参考摩尔手册
但是添加上述属性也没有解决我的问题。
我认为在垫片方法中使用痣是有问题的。
我需要对此(或与此相关的许多意见)提出另一种意见。
如果有人可以提出一个很棒的解决方案。
谢谢。
您的初始代码的唯一问题是缺少 [HostType(Moles)]
。接下来,您必须确保 运行 使用 Visual Studio 测试运行器进行测试。如果您安装了其他测试运行器,则可能是它没有加载 Moles 主机。
我找不到为什么要这样写,所以我用fakes汇编重写了整个测试方法。现在一切正常。
最近在查看一个项目的自动化测试用例时,我遇到了一段代码,是这样的。
[TestMethod]
public void UpdateTtWebScResearchIdt()
{
using (ShimsContext.Create())
{
// Some code
SomeNamespace.Moles.MSubCom.StringFormatStringStringArray = (x, y) => "gLibErr";
//Assert
}
}
当我调试这个测试方法时,编译器显示如下错误
MolesInvalidOperationException。
在 Moles 方法被存根的那一行,即
SomeNamespace.Moles.MSubCom.StringFormatStringStringArray = (x, y) => "gLibErr";
详细消息显示了这一点。
“Moles 要求测试在检测过程中进行。 在 Visual Studio 单元测试中,将以下属性添加到单元测试方法中:
添加此属性
[TestMethod]
[HostType(Moles)]
public void Test()
{
...
}
扩展也可用于大多数单元测试框架。请参考摩尔手册
但是添加上述属性也没有解决我的问题。
我认为在垫片方法中使用痣是有问题的。 我需要对此(或与此相关的许多意见)提出另一种意见。 如果有人可以提出一个很棒的解决方案。
谢谢。
您的初始代码的唯一问题是缺少 [HostType(Moles)]
。接下来,您必须确保 运行 使用 Visual Studio 测试运行器进行测试。如果您安装了其他测试运行器,则可能是它没有加载 Moles 主机。
我找不到为什么要这样写,所以我用fakes汇编重写了整个测试方法。现在一切正常。