我声明了以下类和构造函数:
public class StoryProvider : ReportProviderBase<StoryProvider>, IStoryProvider
{
public StoryProvider(ICommonComponents<StoryProvider> common)
: base(common)
{
Common.Logger.LogTrace("Instantiating StoryProvider");
}
public StoryProvider(ICommonComponents<StoryProvider> common, IEvalReports reports)
: base(common)
{
Reports = reports;
Common.Logger.LogTrace("Instantiating StoryProvider");
}â¦â¦
基类具有以下声明:
public abstract class ReportProviderBase<T> : IDisposable
where T : class
{
public IEvalReports Reports { get; set; }
protected ICommonComponents<T> Common { get; }
protected ReportProviderBase(ICommonComponents<T> common)
{
Common = common;
CreateProfileServerComInstance();
}â¦..
使用Nsubstitute,我声明:
ICommonComponents<StoryProvider> common = GetCommonComponents<StoryProvider>();
var reports = Substitute.For<IEvalReports>();
var provider = await Substitute.For<StoryProvider>(common).HeadlineNewsContentAsync(request);
HeadlineNewsContentAsync
因为报表尚未实例化。
我真的想使用重载构造函数调用它:
var provider = await Substitute.For<StoryProvider>(common, reports).HeadlineNewsContentAsync(request);
reports
以错误的方式,我应该如何更改此方法的调用,使其使用重载构造函数
以下是正在测试的功能:
public HeadlineStoriesResponse HeadlineNewsContent(FrontPageContentRequest request)
{
EnsureConnectedToProfileServer(request.SessionId);
var requestXml = request.XSerialise();
var success = Reports.FrontPageOperation(requestXml, out var responseXml);
if (!success || string.IsNullOrEmpty(responseXml) || responseXml.Contains("<FRONTPAGE_CONTENT/>"))
return new HeadlineStoriesResponse { IsSuccess = false };
var xml = responseXml.GetNodeFromXmlString("FRONTPAGE_CONTENT//HEADLINE_STORIES");
var stories = xml.XDeserialise<HeadlineStoriesResponse>();
stories.IsSuccess = true;
return stories;
}