Unit testing 如何模拟Moq中没有参数的melthod并填写

Unit testing 如何模拟Moq中没有参数的melthod并填写,unit-testing,nunit,moq,Unit Testing,Nunit,Moq,我在Stackoverflow中看到了几个关于MOQ中out参数的问题,我的问题是如何填写此参数:让我们来编码: [HttpPost] public HttpResponseMessage Send(SmsMoRequest sms) { if (sms == null) return Request.CreateResponse(HttpStatusCode.BadRequest); SmsMoResponse response; _messageSe

我在Stackoverflow中看到了几个关于MOQ中out参数的问题,我的问题是如何填写此参数:让我们来编码:

[HttpPost]
public HttpResponseMessage Send(SmsMoRequest sms)
{
    if (sms == null)
        return Request.CreateResponse(HttpStatusCode.BadRequest);

    SmsMoResponse response;
    _messageService.Process(sms, out response);
    return Request.CreateResponse(HttpStatusCode.Created, response.ToString());
}
我想测试一下这个帖子:

[Test]
public void Should_Status_Be_Create_With_Valid_XML()
{
    // Arrange
    var messageServiceMoq = new Mock<IMessageService>();
    SmsMoResponse response;
    messageServiceMoq.Setup(mock => mock.Process(It.IsNotNull<SmsMoRequest>(), out response));
    _kernel.Bind<IMessageService>().ToConstant(messageServiceMoq.Object);
    var client = new HttpClient(_httpServer) { BaseAddress = new Uri(Url) };

    // Act
    using (var response = client.PostAsync(string.Format("Api/Messages/Send"), ValidContent()).Result)
    {
        // Asserts
        response.IsSuccessStatusCode.Should().BeTrue();
        response.StatusCode.Should().Be(HttpStatusCode.Created);
    }
}
[测试]
public void应该是\u Status\u\u Create\u With\u Valid\u XML()
{
//安排
var messageServiceMoq=new Mock();
SMSMO反应;
messageServiceMoq.Setup(mock=>mock.Process(It.IsNotNull(),out response));
_kernel.Bind().ToConstant(messageServiceMoq.Object);
var client=newhttpclient(httpServer){BaseAddress=newuri(Url)};
//表演
使用(var response=client.PostAsync(string.Format(“Api/Messages/Send”),ValidContent()).Result)
{
//断言
response.issucessStatusCode.Should().BeTrue();
response.StatusCode.Should().Be(HttpStatusCode.Created);
}
}
问题 发送方法(POST)中的My
response
对象用于POST响应,但
\u messageService.Process
负责填充
响应
对象。 在测试方法
中,应该使用有效的XML创建状态
I mock
消息服务。进程
响应
对象在
请求.CreateResponse(HttpStatusCode.Created,response.ToString())中未填充ocorr错误
空引用


响应
为空

当然
response
为空,没有任何代码可以将其设置为任何值(在您的服务方法或模拟中)

因为您在模拟通常会填充它的方法,所以由您指定如何设置它。在调用
Setup
之前,您应该用调用该方法时期望的值填充对象


另外,有关更多信息,请参见此。

Send
方法中声明的
response
对象为空。即使我初始化并填写了
是否应该\u Status\u\u Create\u和\u Valid\u XML
测试方法,在
Send
方法中它也将为空。因此,
response.ToString()
将生成一个空引用错误。抱歉。。你说得对,我必须在测试中设定好预期的结果。