Методы Unittesting, которые содержат операторы использования

Это почти то же самое в Angular 2+.

Правильный синтаксис:

Очистка будет выполняться автоматически, предотвращая попадание тегов злых сценариев в ваш div. Источник: Angular - Синтаксис шаблона

5
задан Fadeproof 11 December 2008 в 10:22
поделиться

4 ответа

Так как Вы хотите дразнить класс ресурса, я предполагаю, что Вы уже имеете

interface IResource : IDisposable
{
        void DoSomething();
}

class DisposableResource : IResource
{
    public void Dispose()       {  Console.WriteLine("That's it. I'm outta here!");  }
    public void  DoSomething()  {  Console.WriteLine("Hard work this");  }
}

Чтобы смочь ввести obj, Вам нужен шов.. т.е. GetResource ()

class MyClass
{
    protected virtual IResource GetResource()
    {
        return new DisposableResource();
    }
    public void MyMethod1()
    {
        using (IResource r = GetResource())
        {
            r.DoSomething();
        }
    }
}

В Вашем тестовом коде просто разделите на подклассы и переопределите GetResource () для возврата насмешки.

class MySubClassForTest : MyClass
{
    protected override IResource GetResource()
    {
        return new MockResource();
    }
}
class MockResource : IResource    // or use a mock framework to create one
{
    public void  DoSomething()        { Console.WriteLine("Me work?"); }
    public void  Dispose()            { Console.WriteLine("Disposed Mock!"); }
}

Именно.

 MyClass obj = new MyClass();           // production code
 obj.MyMethod1();

 obj = new MySubClassForTest();         // test code
 obj.MyMethod1();
3
ответ дан 14 December 2019 в 01:19
поделиться

Используя шаблон "фабрика" и/или внедрение зависимости шаблон значительно упростит путь Вы методы модульного теста, которые инстанцируют их собственных ресурсов.

Вот хорошее чтение на предмете:

1
ответ дан 14 December 2019 в 01:19
поделиться

Нет, операторы использования, конечно, не запрещаются. Но что на самом деле делает MyDisposableClass? Это ударяет меня, что это не действительно вопрос оператора использования, являющегося проблемой - это - вопрос метода, создающего новый объект, который Вы хотите дразнить - это - проблема.

Необходимо ли действительно дразнить MyDisposableClass? Это может быть передано в MyMethod вместо того, чтобы быть созданным в нем? Как всегда прием должен разработать, как сцепиться в процесс и ввести Ваши собственные объекты, когда Вы должны...

4
ответ дан 14 December 2019 в 01:19
поделиться

TypeMock позволит Вам дразнить это. Это работает путем изменения IL на лету и таким образом не имеет никаких проблем при насмешке материала, который Вы иначе не можете дразнить.

Но даже с TypeMock необходимо все еще смотреть на то, что Jon Skeet и Pop Catalin говорят выше. Ваш код будет легче поддержать, при попытке сократить количество зависимостей.

1
ответ дан 14 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: