English 中文(简体)
您如何用静态方法表示反对
原标题:How do you mock object in a static method

如果是这样的话:

static class ManifestGenerator
{
    public static void GenerateManifestFile(){
    var doc = new XDocument();
    ...
    ... xml stuff added to doc
    ...
    doc.Save(manifestFilePath)
}

Now can you please tell me how can I create a unit test that will ensure that the method generates correct xml? How can I mock XDocument (I am using Moq), without adding additional parameters to the method call

最佳回答

Don t试图模拟XDocument。 这里的问题不是这样,而是能够查阅正在消失的档案系统。 您可在<代码>Stream上通过,以代替:

public static void GenerateManifestFile(Stream output) {
  var doc = new XDocument();
  ...
  ... xml stuff added to doc
  ...
  doc.Save(output);
}

然后,你可以用<代码>MemoryStream测试,但使用<代码>FileStream进入现实的明显道路。 您甚至可以将这一方法内部(使用<代码>[InternalsVisible To],以便你能够继续从测试中获取这一方法,并用以下几条线将公共参数上下载:

using (Stream output = File.OpenWrite(manifestFilePath))
{
    GenerateManifestFile(output);
}

然后,你不试验,即代码,但你可以检验你的所有真实逻辑。

问题回答

暂无回答




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签