Интерфейс для System.Convert - PullRequest
0 голосов
/ 24 января 2019

Есть ли встроенный интерфейс, который реализует Convert.ToInt64()?

Я пытаюсь смоделировать класс, который отвечает за преобразование строки в long, но я не знаю, какой интерфейс использовать,Это не должно быть Convert.

Я не могу представить себе, я единственный, кому нужен тестируемый класс, который преобразует строки в длинные.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Convert является статическим классом, поэтому он не может иметь интерфейс. Я не уверен, что вы пытаетесь сделать, не глядя на какой-то код, но если вам действительно нужно смоделировать Convert.ToInt64, вы можете использовать Func<string, long>, тогда в ваших тестах передайте фиктивную функцию, т.е. anyString => 21122.

0 голосов
/ 24 января 2019

Чтобы помочь с издевательством, не звоните Convert.ToInt64() напрямую.Вместо этого создайте простой интерфейс-оболочку и используйте внедрение зависимостей:

public interface IStringToLong {
   long StringToLong(string val);
}

public class StringToLong : IStringToLong {
   public long StringToLong(string val) => Convert.ToInt64(val); 
}

// While using dependency injection
public class SomeClass {
   private readonly IStringToLong _stringToLong;

   public SomeClass(IStringToLong stringToLong) {
      _stringToLong = stringToLong;
   }

   public void SomeMethod {
       // Instead of Convert.ToInt64("10000"), use this:
       var someLong = _stringToLong.StringToLong("10000");
   }
}

Теперь при тестировании SomeClass вы можете использовать фиктивный объект, созданный из интерфейса IStringToLong.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...