命名空间 System C# 中不存在 Fakes

问题描述 投票:0回答:1

我正在使用 MSTesting 为 C# .NET Core 版本 8 项目编写模拟测试。该库使用我想在测试项目中伪造的静态方法。我在网上找到了有关使用 Moles(垫片)的信息,语法如下:

using Microsoft.QualityTools.Testing.Fakes;
using (ShimsContext.Create())
{
    System.Fakes.ShimDateTime.NowGet = () => new DateTime(1837, 1, 1);
    ^^^^^^^^^^^^
    Error
}

但是,我无法弄清楚(在阅读文档和其他帖子之后)如何将 Fakes 添加到 System.Runtime。

许多指令说在 Visual Studio 中,您可以向项目程序集中添加 > 添加 Fakes,但没有进一步的指令。但我根本没有找到这个选项。如何在.NET Core MSTest项目中使用System.Fakes来伪造静态方法,如果没有办法,是否有其他方法对此进行模拟测试?

c# unit-testing mocking
1个回答
0
投票

如果没记错的话,Fakes 大约在十年前就很流行(Visual Studio 2012 和 2015 时代)。

从那时起,.Net 发生了很多事情,并且出现了专有的(如 JustMock)和开源的替代品(如 Pose):

using Pose;

Shim dateTimeShim = Shim.Replace(() => DateTime.Now).With(() => new DateTime(2004, 4, 4));

它有局限性,但我认为值得一试。另外值得一提的是,JustMock 还有免费的 Lite 版本。

© www.soinside.com 2019 - 2024. All rights reserved.