【问题标题】:Unit testing a c# Method using Moq使用 Moq 对 c# 方法进行单元测试
【发布时间】:2021-10-15 19:48:26
【问题描述】:

我是单元测试和 c 语言的新手,我正在尝试通过模拟 ISessionStorageService 来测试 HasGlobaladminaccess 函数来进行单元测试,但我的设置似乎没有按预期工作。

public class Context
{
    public asyncTask<bool>HasGlobalAdminAccessAsync(Blazored.SessionStorage.ISessionStorageService sessionStorage)
    {
        return await HasAccessAsync(sessionStorage, Config.Constants.HAS_GLOBALE_ADMIN_ACCESS);
    }

    private async Task<bool> HasAccessAsync(Blazored.SessionStorage.ISessionStorageService sessionStorage, string sessionStorageKey)
    {
        ILogger _logger = Log.ForContext<ContextHelpers>();

        try
        {
            _logger.Debug("HasAccessAsync({sessionStorageKey})", sessionStorageKey);
            var access = await sessionStorage.GetItemAsync<bool>(sessionStorageKey);
            _logger.Debug("HasAccessAsync({sessionStorageKey})::access={access}", sessionStorageKey, access);
            return access;
        }
        catch (Exception ex)
        {
            _logger.Debug("HasAccessAsync({sessionStorageKey})::exception={ex}", sessionStorageKey, ex.Message);
            return false;
        }
    }
}

我的测试方法

private readonly Mock<ISessionStorageService> MockStorage = new Mock<ISessionStorageService>();

[Fact()]
public async Task HasGlobalAdminAccessAsyncTest()
{
    string guid = System.Guid.NewGuid().ToString();
    Context context = new Context();
    MockStorage.Setup(foo => foo.GetItemAsync<bool>(guid)).ReturnsAsync(true);
    var person = await context.HasGlobalAdminAccessAsync(MockStorage.Object);
    Assert.True(person , guid);
}

【问题讨论】:

  • 你想用这条线测试什么:Assert.True(person, guid)

标签: c# unit-testing moq


【解决方案1】:

在您的测试中使用与 Config.Constants.HAS_GLOBALE_ADMIN_ACCESS 中相同的值作为 GUID 值

或者使用

foo => foo.GetItemAsync<bool>(It.IsAny<Guid>())

在您的Setup 电话中。

正如它所写的那样,您的测试集只接受在您的测试中从Guid.NewGuid() 返回的确切 GUID,因此它一般不会工作。

【讨论】:

    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多