小编Iva*_*gan的帖子

C# Mock IHttpclient & CreateClient

我有一个要进行 x 单元测试的函数,但似乎必须模拟 CreateClient 函数?每当我在测试期间调试它时,似乎 var 客户端等于 null。我正在正确注入依赖项,我确信这一点。我想知道的是如何模拟 CreateClient。

这是那个功能:

    public async Task CreateMessageHistoryAsync(Message message)
    {
        //This seems to be giving a null value
        var client = this.clientFactory.CreateClient(NamedHttpClients.COUCHDB);

        var formatter = new JsonMediaTypeFormatter();
        formatter.SerializerSettings = new JsonSerializerSettings
        {
            Formatting = Formatting.Indented,
            NullValueHandling = NullValueHandling.Ignore,
            ContractResolver = new CamelCasePropertyNamesContractResolver()
        };

        Guid id = Guid.NewGuid();            

        var response = await client.PutAsync(id.ToString(), message, formatter);

        if (!response.IsSuccessStatusCode)
        {
            throw new HttpRequestException(await response.Content.ReadAsStringAsync());
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是单元测试,我在一个单独的类中模拟 IHttpClient 并且我正在使用该类。

    [Collection("MockStateCollection")]
    public class CreateMessageHistory
    {
        private readonly MockStateFixture …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq mocking xunit

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

C#真正通过引用传递是通过引用传递吗?

void Method(ref int refArgument)
{
    refArgument = refArgument + 44;
}

int number = 1;
Method(ref number);
Console.WriteLine(number);
Run Code Online (Sandbox Code Playgroud)

在幕后,到底发生了什么?

它将内存地址传递给方法/功能,并更改存储在该内存地址中的值?

要么

它创建一个新的内存地址并将值存储在该新创建的地址中,并将变量(数字)指向新的内存地址吗?

哪一个

我的直觉是第一个,因为C#中的原始数据类型是struct,因此它们将始终按值传递

.net c#

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

标签 统计

c# ×2

.net ×1

mocking ×1

moq ×1

unit-testing ×1

xunit ×1