Тестирование общего метода расширения - PullRequest
3 голосов
/ 01 апреля 2011

У меня действительно простой метод расширения, который запрещен для экземпляров IComparable:

public static bool Between<T>(this T comparable, T min, T max) where T : IComparable<T>
{
    return comparable.CompareTo(min) >= 0 && comparable.CompareTo(max) <= 0;
}

Какой будет правильный подход для проверки этого метода? Я пытался насмехаться над экземплярами IComparable безрезультатно ... Я использую NUnit и Moq, но я действительно нуб в TDD.

Ответы [ 2 ]

5 голосов
/ 01 апреля 2011

Не надо ничего издеваться.Вы можете использовать любой объект IComparable, например целые числа или строки.
Проверьте это:

[TestMethod]
public void YourTestName()
{
    Assert.IsTrue(2.Between(0, 5));
    Assert.IsFalse("a".Between("b", "d"));
}

Keep It Simple.

Кстати, я бы переименовал этот метод в IsBetweenвместо просто Between.Я нашел это намного более свободно.

[TestMethod]
public void YourTestName()
{
    Assert.IsTrue(2.IsBetween(0, 5));
}
3 голосов
/ 01 апреля 2011

Попробуйте следующее в Мок.Это позволит проверить случай, когда значение фактически находится между предоставленными значениями.

var mock = new Mock<IComparable<string>>();
mock.Setup(x => x.CompareTo("a")).Returns(1).Verifiable();
mock.Setup(x => x.CompareTo("z")).Returns(-1).Verifiable();
Assert.IsTrue(mock.Object.Between("a", "z"));
mock.Verify();

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

...