草庐IT

c# - 我能否使用 Moq 来验证是否使用复杂参数中的特定值调用了模拟方法?

假设我正在模拟以下类:publicclassClassAParams{publicintRequestedId{get;set;}publicstringSomeValue{get;set;}}publicclassClassA{publicvoidExecuteAction(ClassAParamsexecuteParams){}}现在假设我有另一个类(我们称它为ClassB),我正在为其创建单元测试,我想确保当ClassB.Execute()被调用,ClassB调用ClassA.ExecuteAction()但我想确保它调用该方法的参数具有ClassAParams.Requeste

c# - 使用 Moq 调用原始方法

我有一个包含2个方法的ProductRepository,GetAllProducts和GetProductByType,我想测试GetProductByType的逻辑。在内部,GetProductByType调用GetAllProducts,然后过滤正确的产品。publicvirtualIEnumerableGetAllProducts(){//returnsallproductsinmemory,dbetc}publicvirtualIEnumerableGetProductsByType(stringtype){return(frompinGetAllProducts()wher

c# - 模拟一个抛出异常(moq)的方法,但在其他方面表现得像被模拟的对象?

我有一个Transfer类,简化后如下所示:publicclassTransfer{publicvirtualIFileConnectionsource{get;set;}publicvirtualIFileConnectiondestination{get;set;}publicvirtualvoidGetFile(IFileConnectionconnection,stringremoteFilename,stringlocalFilename){connection.Get(remoteFilename,localFilename);}publicvirtualvoidPutFi

c# - 如何使用 MOQ 框架在 c# 中模拟静态方法?

我最近一直在做单元测试,我已经成功地使用MOQ框架和MS测试模拟了各种场景。我知道我们无法测试私有(private)方法,但我想知道我们是否可以使用MOQ模拟静态方法。 最佳答案 Moq(和其他基于DynamicProxy的模拟框架)无法模拟任何不是虚拟或抽象方法的东西。密封/静态类/方法只能使用基于ProfilerAPI的工具伪造,例如Typemock(商业)或MicrosoftMoles(免费,在VisualStudio2012Ultimate/2013/2015中称为Fakes)。或者,您可以重构您的设计以抽象调用静态方法,并

c# - 如何使用 Moq 模拟扩展方法?

我正在编写一个依赖于扩展方法结果的测试,但我不希望该扩展方法的future失败永远破坏这个测试。模拟该结果似乎是显而易见的选择,但Moq似乎没有提供覆盖静态方法的方法(扩展方法的要求)。Moq.Protected和Moq.Stub也有类似的想法,但它们似乎没有为这种情况提供任何东西。我是否遗漏了什么或者我应该以不同的方式解决这个问题?这是一个简单的示例,它失败并出现通常的“对不可覆盖成员的无效期望”。这是一个需要模拟扩展方法的坏例子,但它应该这样做。publicclassSomeType{intId{get;set;}}varListMock=newMock>();ListMock.E

c# - 我如何在没有明确指定或使用重载的情况下 Moq 在其签名中具有可选参数的方法?

给定以下界面:publicinterfaceIFoo{boolFoo(stringa,boolb=false);}尝试使用Moq模拟它:varmock=newMock();mock.Setup(mock=>mock.Foo(It.IsAny())).Returns(false);编译时出现如下错误:Anexpressiontreemaynotcontainacallorinvocationthatusesoptionalarguments我发现上面提出的问题是enhancement在Moq的问题列表中,它似乎被分配给4.5版本(无论何时)。我的问题是:鉴于上述问题不会很快得到解决,我该

c# - 使用 Moq 验证方法调用

我对C#中的单元测试和学习使用Moq还很陌生。下面是我要测试的类(class)。classMyClass{SomeClasssomeClass;publicMyClass(SomeClasssomeClass){this.someClass=someClass;}publicvoidMyMethod(stringmethod){method="test"someClass.DoSomething(method);}}classSomeclass{publicDoSomething(stringmethod){//dosomething...}}下面是我的测试类:classMyClass

c# - 使用 Moq 模拟单元测试的异步方法

我正在测试一种调用WebAPI的服务的方法。如果我也在本地运行Web服务(位于解决方案的另一个项目中),则使用普通的HttpClient可以很好地进行单元测试。但是,当我checkin我的更改时,构建服务器将无法访问Web服务,因此测试将失败。我通过创建一个IHttpClient接口(interface)并实现我在我的应用程序中使用的版本,为我的单元测试设计了一个解决这个问题的方法。对于单元测试,我制作了一个带有模拟异步发布方法的模拟版本。这是我遇到问题的地方。我想为这个特定的测试返回一个OKHttpStatusResult。对于另一个类似的测试,我将返回一个糟糕的结果。测试将运行但永

关于 c#:Moq – 在 setup\\’s return 中使用 It.IsAny 时会发生什么?

Moq-WhathappenswhenusingIt.IsAnyinasetup'sreturn?我正在使用Moq在C#中执行单元测试。特别是一项测试,我在System.Net.Mail.SmtpClient上创建了一个接口package器,以便可以对其进行模拟。1234567891011121314151617181920publicclassSmtpClient:ISmtpClient{  publicstringHost{get;set;}  publicintPort{get;set;}  publicICredentialsByHostCredentials{get;set;}  p

关于 c#:Moq – 在 setup\\’s return 中使用 It.IsAny 时会发生什么?

Moq-WhathappenswhenusingIt.IsAnyinasetup'sreturn?我正在使用Moq在C#中执行单元测试。特别是一项测试,我在System.Net.Mail.SmtpClient上创建了一个接口package器,以便可以对其进行模拟。1234567891011121314151617181920publicclassSmtpClient:ISmtpClient{  publicstringHost{get;set;}  publicintPort{get;set;}  publicICredentialsByHostCredentials{get;set;}  p