模拟存储过程的输出参数

Ale*_*x K 5 .net c# unit-testing moq mocking

我有以下方法

public bool IsUserAllowedToDoThings(string userName, string thingToDo)
    {
        var outputParameter = new ObjectParameter("IsAllowed", typeof(bool?));
        _context.SP_IsUserAllowedToDoThings(userName, thingToDo, outputParameter);
        return (bool)outputParameter.Value;
    }
Run Code Online (Sandbox Code Playgroud)

该方法只是使用 EF 调用 SP 并返回 SP 的输出结果。但是我在模拟 SP 的输出进行单元测试时遇到了问题。PS 我正在使用 MOQ 框架进行模拟。

Ale*_*x K 4

在第三次阅读最小起订量手册后,我终于找到了执行此操作的方法。这出奇的简单:

 mockObjectContext.Setup(m => m.SP_IsUserAllowedToDoThings(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ObjectParameter>())).Callback<string, string, ObjectParameter>((a, b, c) =>
        {
            c.Value = true;
        });
Run Code Online (Sandbox Code Playgroud)