是否存在实现Convert.ToInt64()
的内置接口?
我正在尝试模拟负责将字符串转换为long的类,但是我不知道使用哪个接口。不必是Convert
。
我无法想象我是唯一需要将字符串转换为long的可测试类的人。
答案 0 :(得分:1)
为帮助进行模拟,请勿直接调用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接口创建的模拟对象。
答案 1 :(得分:0)
Convert
是静态类,因此它不能具有接口。我不确定在不查看代码的情况下要做什么,但是如果您确实需要模拟Convert.ToInt64
,则可以使用Func<string, long>
,然后在测试中传递一个模拟函数,即{ {1}}。