`MS Fakes` 中使用的 `AllInstances`
The `AllInstances` using in the `MS Fakes`
MS Visual Studio 2015 企业。
.Net Framework 4.6
来自MSDN:
To use a shim for an instance method, write AllInstances
between the
type name and the method name:
System.IO.Fakes.ShimFile.AllInstances.ReadToEnd = ...
但是当我在 ShimFile
之后写 .
时 IntelliSense 在 ComboBox 中没有 AllInstances
项目:
我也尝试对 DateTime
做同样的事情,我看到另一个问题:AllInstances
存在,但是 IntelliSense 没有项目它:
为什么会出现这些错误?
对于问题 1,我认为您尝试使用错误的 Shim class。您需要 StreamReader(其中包含 ReadToEnd
方法)。这对我有用:
string testString = "Hello World!";
System.IO.Fakes.ShimStreamReader.AllInstances.ReadToEnd = reader => testString;
对于第 2 期,我认为您无法对结构进行 Shim。 DateTime
实际上是一个结构而不是 class。这是我试过的一些示例代码:
public struct TestShimOfStruct
{
public int Year { get; set; }
}
public class TestShimOfClass
{
public int Year { get; set; }
}
...
[TestMethod]
public void TestStructAndClass()
{
using (ShimsContext.Create())
{
PartialTest.Fakes.ShimTestShimOfClass.AllInstances.YearGet = shimClass => 2015;
PartialTest.Fakes.ShimTestShimOfStruct.AllInstances.YearGet = shimClass => 2015;
}
}
TestMethod 在 VisualStudio 中显示此错误。
如您所见,结构失败,而 class 成功,即使在逻辑上是等价的。
MS Visual Studio 2015 企业。
.Net Framework 4.6
来自MSDN:
To use a shim for an instance method, write
AllInstances
between the type name and the method name:System.IO.Fakes.ShimFile.AllInstances.ReadToEnd = ...
但是当我在 ShimFile
之后写 .
时 IntelliSense 在 ComboBox 中没有 AllInstances
项目:
我也尝试对 DateTime
做同样的事情,我看到另一个问题:AllInstances
存在,但是 IntelliSense 没有项目它:
为什么会出现这些错误?
对于问题 1,我认为您尝试使用错误的 Shim class。您需要 StreamReader(其中包含 ReadToEnd
方法)。这对我有用:
string testString = "Hello World!";
System.IO.Fakes.ShimStreamReader.AllInstances.ReadToEnd = reader => testString;
对于第 2 期,我认为您无法对结构进行 Shim。 DateTime
实际上是一个结构而不是 class。这是我试过的一些示例代码:
public struct TestShimOfStruct
{
public int Year { get; set; }
}
public class TestShimOfClass
{
public int Year { get; set; }
}
...
[TestMethod]
public void TestStructAndClass()
{
using (ShimsContext.Create())
{
PartialTest.Fakes.ShimTestShimOfClass.AllInstances.YearGet = shimClass => 2015;
PartialTest.Fakes.ShimTestShimOfStruct.AllInstances.YearGet = shimClass => 2015;
}
}
TestMethod 在 VisualStudio 中显示此错误。
如您所见,结构失败,而 class 成功,即使在逻辑上是等价的。