Эквивалент IsType xUnit.net в тесте MS, который возвращает тип - PullRequest
0 голосов
/ 25 апреля 2018

Я следую этому руководству и пытаюсь написать аналогичный тест с MS Test.Есть ли у MS Test IsType(), который возвращает объект , если приведение выполнено успешно?

С это сравнение , я вижу, что могуиспользуйте IsInstanceOfType(), но тип возвращаемого значения - void.


Я пытаюсь реализовать эту строку в MS Test: var badRequestResult = Assert.IsType<BadRequestObjectResult>(result);

[Fact]
public async Task IndexPost_ReturnsBadRequestResult_WhenModelStateIsInvalid()
{
    // Arrange
    var mockRepo = new Mock<IBrainstormSessionRepository>();
    mockRepo.Setup(repo => repo.ListAsync()).Returns(Task.FromResult(GetTestSessions()));
    var controller = new HomeController(mockRepo.Object);
    controller.ModelState.AddModelError("SessionName", "Required");
    var newSession = new HomeController.NewSessionModel();

    // Act
    var result = await controller.Index(newSession);

    // Assert
    var badRequestResult = Assert.IsType<BadRequestObjectResult>(result);
    Assert.IsType<SerializableError>(badRequestResult.Value);
}

ДаЯ мог бы использовать as, а затем использовать IsInstanceOfType ... просто интересно, есть ли однострочник.

var badRequestResult = result as BadRequestObjectResult;
Assert.IsInstanceOfType(badRequestResult, typeof(BadRequestObjectResult));

1 Ответ

0 голосов
/ 25 апреля 2018

В MSTest нет ни одной эквивалентной версии, с которой мне когда-либо приходилось сталкиваться.

также при приведении к типу нет необходимости проверять, является ли экземпляр типа.Просто проверьте, не является ли оно нулевым.

// Act
var result = await controller.Index(newSession);

// Assert
var badRequestResult = result as BadRequestObjectResult;
Assert.IsNotNull(badRequestResult, "Expected BadRequestObjectResult");
Assert.IsInstanceOfType(badRequestResult.Value,typeof(SerializableError));

В противном случае вы можете создать собственное утверждение

public static class AssertExtension {
    public static TExpected AssertIsType<TExpected>(this object actual, string message = null) {
        TExpected result = actual as TExpected;
        Assert.IsNotNull(result, message);
        return result;
    }
}

, обеспечивающее желаемое поведение

// Assert
var badRequestResult = result.AssertIsType<BadRequestObjectResult>();
badRequestResult.Value.AssertIsType<SerializableError>();
...