我正在使用xUnit和moq编写测试用例,并使用下面的代码创建Mock,但问题越来越突出。
BlobServiceProvider 类具有以下代码
问题:
不受支持的表达式:repo => repo.GetBlockBlobContainer(“ sample”) 不可覆盖的成员(此处: BlobServiceProvider.GetBlockBlobContainer)不能在设置/ 验证表达式。
我该如何解决以上问题
答案 0 :(得分:0)
moq
使用dynamic proxy围绕模拟类型创建包装器,以便能够拦截调用并更改所调用方法的行为。
代理是如何构建的?
interface
代理仅仅是接口的实现class
,则该代理将覆盖该类问题:您可以模拟sealed class
还是非virtual
(abstract
)方法?
你猜,不是。无法使用动态代理在其周围创建包装器。 moq
本身也建议相同,如果您看到错误的话:
不可覆盖的成员(此处: BlobServiceProvider.GetBlockBlobContainer)可能无法在设置中使用
要回答您的问题,您需要从提供程序中提取interface
并对其进行模拟或将方法标记为虚拟。就个人而言,我确实更喜欢使用interface
选项,但是它可能需要一些重构和DI。