gpt4 book ai didi

c# - 用于单元测试的模拟 dll 方法

转载 作者:行者123 更新时间:2023-11-30 22:46:26 25 4
gpt4 key购买 nike

我正在尝试为一个方法编写单元测试,该方法调用了 dll 中的方法。无论如何我可以模拟 dll 方法以便我可以进行单元测试吗?

public string GetName(dllobject, int id)
{
var eligibileEmp = dllobject.GetEligibleEmp(id); <---------trying to mock
this method

if(eligibleEmp.Equals(empValue)
{
..........
}
}

最佳答案

当使用不为单元测试提供测试加倍方法的第三方库时,最好的办法是创建一个测试加倍 Facade .创建一个类,其唯一职责是为第三方库提供可测试的双重接口(interface)。它除了传递对库的调用之外什么都不做,但它这样做是为了让您可以绑定(bind)它的抽象并模拟它。

例如:

public interface IMyDllObject
{
object DllObject { get; set; }
object GetEligibleEmp(int id);
}

public class MyDllObject : IMyDllObject
{
object DllObject { get; set; }
object GetEligibleEmp(int id)
{
DllObject.GetEligibleEmp(id);
}
}

// elsewhere in your code:
IMyDllObject myDllObject = CreateMyDllObject(); // Factory method, can return test double

// elsewhere elsewhere
var eligibleEmp = myDllObject.GetEligibleEmp(id);

就是说,不要对库中的每个函数/类/方法都这样做!这可能没有必要。仅将依赖于您在单元测试中无法控制的外部资源的事物加倍,例如文件或网络通信。

关于c# - 用于单元测试的模拟 dll 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2648292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com