Как проверить, использовалось ли свойство [] - PullRequest
0 голосов
/ 06 апреля 2020

Я использую Vs2015 с NSubstitute 3.1.0. Этот код передается, но не должен.

public class Test
{
    public string[] Content { get; set; }
}
[Fact]
public void Should_What()
{
    var obj = Substitute.For<Test>();
    var test = obj.DidNotReceive().Content;
    var test2 = obj.Received().Content;
}

Если заменить интерфейс Test на интерфейс, он будет работать хорошо, но в моем тесте у меня есть класс.

Как проверить, если свойство Контент был использован?

1 Ответ

0 голосов
/ 07 апреля 2020

Решение состоит в том, чтобы использовать для свойства virtual.

public virtual string[] Content { get; set; }

Но если два противоположных теста возвращают True одновременно, у нас есть ошибка. Можно объяснить причину и указать решение, но это обходной путь.

По моему мнению, это должно вызвать исключение (например, NotSupportedException, когда тест выполняется на не виртуальных свойствах). Ожидается, что среда тестирования обнаружит проблемы. Так и должно быть пессимисти c. В этом случае лучше вернуть false вместо true. Подписать с разработчиком проблему (даже если это в рамках). Например, в SQL при попытке проверить нулевое значение всегда будет возвращаться false (null == true, null == 0 или даже null == null). Это только моя точка зрения. Что вы, ребята, думаете об этом?

...