如何配置 NSubstitute 不调用内部虚方法
How to configure NSubstitute NOT call internal virtual method
我想对这个进行单元测试 class
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);
这是对内部方法进行单元测试的正确方法吗?当我尝试将修饰符从 internal 更改为 public 并且单元测试正常时。
请指教
谢谢
我认为您需要让 internal
成员对 DynamicProxyGenAssembly2
可见。该程序集由 NSubstitute(以及许多其他 .NET 模拟库)使用的 Castle DynamicProxy 库创建,用于创建 substitute/mock 类型。
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
如果你安装了NSubstitute.Analyzers package it should prompt you这种情况。
我想对这个进行单元测试 class
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);
这是对内部方法进行单元测试的正确方法吗?当我尝试将修饰符从 internal 更改为 public 并且单元测试正常时。
请指教
谢谢
我认为您需要让 internal
成员对 DynamicProxyGenAssembly2
可见。该程序集由 NSubstitute(以及许多其他 .NET 模拟库)使用的 Castle DynamicProxy 库创建,用于创建 substitute/mock 类型。
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
如果你安装了NSubstitute.Analyzers package it should prompt you这种情况。