小编viv*_*k86的帖子

起订量设置覆盖

我已经浏览了之前的所有答案,但没有一个能解决我的问题。

假设我有以下代码:

public interface ISomeInterface
{
    int SomeMethod(int a, string b);
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个常见的模拟类,它定义了上述方法的一些默认行为

public class CommonMock
{
    public Mock<ISomeInterface> MockInterface = new Mock<ISomeInterface>().Setup(x => x.SomeMethod(It.IsAny<int>(), It.IsAny<string>())).Returns(It.IsAny<int>());
}
Run Code Online (Sandbox Code Playgroud)

我需要一些默认行为,因为我有很多需要默认行为的测试用例。

但在某些特定的测试场景中,在完全独立的测试类中,我需要能够在测试某些特定的测试用例时返回不同的值。

像下面这样:

[Test]
public void TestSomeMethodSpecific()
{
    var commonMock = new CommonMock();
    commonMock.MockInterface.Setup(x => x.SomeMethod(It.IsAny<int>(), It.IsAny<string>())).Returns(42);

    // Do some test based on the new return value
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

下面我附上一些实际代码:

通用设置

public class MockStore
{
    public Mock<IProcessHandler> ProcessHandler = new Mock<IProcessHandler>();
    ProcessHandler.Setup(x => x.GetCurrentProcessRunId()).Returns(It.IsAny<int>());
}
Run Code Online (Sandbox Code Playgroud)

测试类中覆盖的设置

var mockstore = new MockStore();
mockStore.ProcessHandler.Setup(x => …
Run Code Online (Sandbox Code Playgroud)

c# moq

10
推荐指数
1
解决办法
1万
查看次数

库之间的区别:Microsoft.Azure.EventGrid 和 Azure.Messaging.EventGrid

我一直在尝试使用 Azure EventGrid 将事件发布到Azure.Messaging.EventGridEvent.EventGridPublisherClient,效果很好。我刚刚发现 EventGrid 还有另一个客户端,即Microsoft.Azure.EventGrid.EventGridClient.

经过调查,库和命名空间都实现了相同的目标,但公开了截然不同的方法和属性,并且处理序列化和反序列化的方式也Data截然不同;whileMicrosoft.Azure.EventGrid.EventGridEvent直接将Data属性公开为public属性,Azure.Messaging.EventGridEventhasData作为internal属性并且仅公开诸如GetData<T>、 和 之类的方法GetDataAsync<T>

让两个库做几乎相似的事情让我完全困惑,不知道哪个是正确的库。对于我们何时应该使用一个库而不是另一个库,是否有任何指导原则?使用其中一种比另一种有什么好处吗?我尝试查看文档,但无法辨别有关这两个库的正确用法的任何信息。

c# azure azure-eventgrid

4
推荐指数
1
解决办法
1008
查看次数

标签 统计

c# ×2

azure ×1

azure-eventgrid ×1

moq ×1