- 我有这个场景:一个有 2 个方法的接口(interface)
- 这两种方法接受请求并返回响应
- 方法包含内部功能(检查权限和验证请求并使用 Entity Framework 从数据库获取数据。
- 但我想测试方法而不仅仅是接口(interface)。
- 我已经成功地测试了接口(interface),但现在我想进入方法并在其中进行测试。
代码示例:
public interface IMyInterface
{
[OperationContract]
responseObject GetData(Service<RequestObject> request);
}
public class MyConcreteClass : IMyInterface
{
public responseObject GetData(Service<RequestObject> request)
{
CheckForNull(request);
ValidateMethod(request);
//connect to db
using(var context = new contextEntity)
{
//get data
}
}
}
现在,我想测试检查空值、权限和数据访问,是否可行?还是必须从内部方法中提取接口(interface)?
PS,这是为了我的单元测试。我正在尝试消除外部依赖性。 请详细说明
最佳答案
不应该直接需要单元测试私有(private)方法,只能通过公共(public)方法间接使用。如果您认为测试公共(public)方法不够精确,可能是因为该方法和类已经太复杂了。
在这种情况下,请考虑在新代码所在的位置创建一个或多个新类。这样你就可以通过公共(public)方法对你的代码进行单元测试。额外的好处是您的代码在 Single responsibility principle. 方面可能更好。
关于c# - 我如何使用 Moq 来模拟一个接口(interface),该接口(interface)具有将具体类作为参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982105/