gpt4 book ai didi

c# - 如何创建 SearchResponse 类的实例(没有公共(public)构造函数)?

转载 作者:太空宇宙 更新时间:2023-11-03 23:33:41 26 4
gpt4 key购买 nike

我想模拟一个从命名空间 System.DirectoryServices.Protocols 返回 SearchResponse 对象的方法。我使用最小起订量。我需要创建它的实例。它没有任何构造函数。

通常在我的项目中,它是将 DirectoryResponse 对象转换为 SearchResponse 类的结果,其中 DirectoryReponse 是 LdapConnection 对象的 SendRequest 方法的结果。

有什么方法可以创建 SearchReponse 类的实例吗?

最佳答案

你可以用 Typemock Isolator 来做通过 faking SearchResponse 带有 Members.CallOriginal 标志以确保调用原始实现。

*请确保在使用前将状态设置为假的。

另一种方法是使用 FakeDependencies . Isolator 自动为 ctors 参数创建假货,传递它们并返回您的类(SearchResponse)的实例。您可以创建并将部分或全部依赖项传递给 FakeDependencies 方法,它会在创建时将它们委托(delegate)给构造器。

例子:

class MyClass
{
public SearchResponse GetSearchResponse()
{
return null;
}
}

真实的:

[TestMethod]
public void CreateSearchResponse_RealObjectWithFakedDependencies()
{
var myClass = new MyClass();
SearchResponse searchResponse = Isolate.Fake.Dependencies<SearchResponse>();
Isolate.WhenCalled(() => myClass.GetSearchResponse()).WillReturn(searchResponse);

SearchResponse sr = myClass.GetSearchResponse(); // returns SearchResponse

//...
}

假的:

[TestMethod]
public void CreateSearchResponse_FakeObject_StateShouldBeSet_OriginalBehavior()
{
var myClass = new MyClass();
SearchResponse fakeSearchResponse = Isolate.Fake.Instance<SearchResponse>(Members.CallOriginal, ConstructorWillBe.Called);
Isolate.WhenCalled(() => myClass.GetSearchResponse()).WillReturn(fakeSearchResponse);

SearchResponse sr = myClass.GetSearchResponse(); // returns fakeSearchResponse

//...
}

关于c# - 如何创建 SearchResponse 类的实例(没有公共(public)构造函数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31295607/

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