Как я могу Shim метод расширения, используя Microsoft Fakes? - PullRequest
0 голосов
/ 20 июня 2019

У меня проблемы с разработкой способа создания Shim для метода расширения.

У меня есть метод расширения в моей сборке "MJH.Extensions.dll" следующим образом: (очевидно, это не то, что делает метод REAL. Я упростил его для этого примера).

namespace MJH.Extensions {
  public static class ListItemExtensions {
     public static string foo(this Microsoft.SharePoint.ListItem item) {
        return string.Empty;
     }
  }
}

Конечно, вы можете легко использовать это в коде ..

using Microsoft.SharePoint.Client;
using MJH.Extensions;
...
ListItem item = new ListItem();
item.foo(); // returns empty string

Я пытаюсь использовать этот метод для модульных тестов ... но не могу ради жизнивыяснить, как это сделать.

Я добавил сборку "Fakes" для моей собственной сборки MJH, которая включает статический класс "ListItemExtensions".

Я также пытался добавить "Подделка "сборка для сборки" Microsoft.SharePoint.Client "тоже.

(и все перестановки).

using Microsoft.SharePoint.Client;
using MJH.Extensions;
using Microsoft.QualityTools.Testing.Fakes;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace MJH.Tests {

[TestClass]
public class MyTests {

   [TestMethod]
   public void TestSample() {
      using(ShimsContext()) {
        // complains that "ShimListItem.AllInstances" does not contain a definition for "foo"
        Microsoft.SharePoint.Client.Fakes.ShimListItem.AllInstances.foo () => {
          return "something else";
        }
      }
   }
}
}
...