Как проходит мой тест xUnit, когда у меня есть Assert.Null (результат) и Assert.NotNull (результат)? - PullRequest
0 голосов
/ 28 августа 2018

Я реорганизовал некоторые тесты в своем решении с MSTest на xUnit. Несмотря на то, что все мои тесты прошли с использованием MSTest, были сделаны некоторые изменения, которые заставили меня задуматься о том, как все легко проходило во время моего рефакторинга.

Я поставил противоречивые утверждения в конце теста и отладил. Хотя результат выглядел так, как я хотел, чтобы он выглядел (объект был нулевым), он прошел оба утверждения. Как это возможно? Что я делаю не так?

Вот мой тест. Именование изменено, потому что это код, над которым я работаю на работе, но изменения заканчиваются простой заменой слов. Я добавил комментарии, чтобы показать некоторые из моих намерений, а также то, что произошло, когда я отлаживал тест.

using AutoFixture.Xunit;
using Moq;
using My.Core.Project.Interfaces;
using My.Core.Project].Models;
using My.UI.Project.Factories.Sidebar;
using System;
using System.Threading.Tasks;
using Xunit;
using Xunit.Extensions;

[Theory, AutoData]
public async Task GetReturnedObject_NoReturnedObject_EmptyResult(Guid returnedObjectIdentifier, ReturnedObjectType setupObject)
{
    //Arrange
    var mockServiceClient = new Mock<IServiceClient>(MockBehavior.Strict);

    var returnedObjectIdentifierParameter = returnedObjectIdentifier.ToString(); //Parse logic in the method exists, so I had to make sure the input was not just any string
    setupObject = null; //I want the search in the method to not find anything.

    mockServiceClient.Setup(c => c.GetReturnedObjectById(It.IsAny<Guid>())).ReturnsAsync(setupObject);

    var factory = new Factory();

    //Act
    var returnedObject = await factory.GetReturnedObject(mockServiceClient.Object, returnedObjectIdentifierParameter); //returnedObject is NULL.

    //Assert
    Assert.Null(returnedObject); //Hovered over returnedObject. It's NULL.
    Assert.NotNull(returnedObject); //Hovered over returnedObject, again. Still NULL. THIS SHOULD FAIL!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...