C# фиктивная локальная ссылочная переменная - PullRequest
1 голос
/ 08 апреля 2020

Есть ли способ макетировать объект MyObject без рефакторинга?

public class BadClass{

   public int Process(){
      MyObject obj=new MyObject();
      return obj.doSomething(); 
   }

}

1 Ответ

0 голосов
/ 09 апреля 2020

Это действительно помогает, но интересно, что только я использую msfakes. Когда дело доходит до java на таких вещах, есть множество статей высокого качества, но на c# есть только один на веб-сайте MS, показывающий, как издеваться над датой c.

 [TestClass]
    public class UnitTest1
    {
        private BadClass badClass=new BadClass();

        [TestMethod]
        public void TestMethod1()
        {
            using (ShimsContext.Create())
            {
                SampleCCProject.Fakes.ShimMyObject.AllInstances.doSomething =
                   @class =>
                    {
                        Console.WriteLine("Hello");
                        return 9;
                    };

                Assert.AreEqual(badClass.Process(), 9);
            }
        }
    }
...