Как настроить NSubstitute НЕ вызывать внутренний виртуальный метод - PullRequest
0 голосов
/ 19 марта 2019

Я хочу провести модульное тестирование этого класса

public class Email 
{ 
    public async virtual Task<bool> Send(  )
    {
        //code
        await Save();
    }

    internal virtual async   Task<bool> Save( )
    {

    } 
}

и кода этого модульного теста

var email = Substitute.ForPartsOf<Email>( ); 
email.When(x => x.Save( )).DoNotCallBase(); --> why x.Save will call the real implementation code
email.Save( ).ReturnsForAnyArgs(true);

, и является ли это правильным способом внутреннего метода модульного тестирования?Как я пытался изменить модификатор с внутренний на public и модульный тест в порядке.

Пожалуйста, сообщите.

Спасибо

1 Ответ

0 голосов
/ 19 марта 2019

Я думаю, вам нужно сделать internal член видимым для DynamicProxyGenAssembly2. Эта сборка создается библиотекой Castle DynamicProxy, используемой NSubstitute (и многими другими библиотеками-макетами .NET) для создания типов замены / mock.

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] 

Если вы устанавливаете пакет NSubstitute.Analyzers , он должен запросить у вас информацию об этом случае.

...