我有一个要进行 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) 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,因此它们将始终按值传递