第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

用Moq模擬擴(kuò)展方法

用Moq模擬擴(kuò)展方法

SMILET 2019-08-13 09:49:14
用Moq模擬擴(kuò)展方法我有一個(gè)預(yù)先存在的界面......public interface ISomeInterface{     void SomeMethod();}并且我使用mixin擴(kuò)展了這個(gè)表面...public static class SomeInterfaceExtensions{     public static void AnotherMethod(this ISomeInterface someInterface)     {         // Implementation here     }}我有一個(gè)叫這個(gè)我要測(cè)試的課程...public class Caller{     private readonly ISomeInterface someInterface;     public Caller(ISomeInterface someInterface)     {         this.someInterface = someInterface;     }     public void Main()     {         someInterface.AnotherMethod();     }}和測(cè)試,我想模擬界面并驗(yàn)證對(duì)擴(kuò)展方法的調(diào)用...    [Test]     public void Main_BasicCall_CallsAnotherMethod()     {         // Arrange         var someInterfaceMock = new Mock<ISomeInterface>();         someInterfaceMock.Setup(x => x.AnotherMethod()).Verifiable();         var caller = new Caller(someInterfaceMock.Object);         // Act         caller.Main();         // Assert         someInterfaceMock.Verify();     }然而,運(yùn)行此測(cè)試會(huì)產(chǎn)生異常......System.ArgumentException: Invalid setup on a non-member method:x => x.AnotherMethod()我的問題是,有一個(gè)很好的方法來(lái)模擬混合調(diào)用嗎?
查看完整描述

3 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

你不能用模擬框架“直接”模擬靜態(tài)方法(因此擴(kuò)展方法)。您可以嘗試Moles(http://research.microsoft.com/en-us/projects/pex/downloads.aspx),這是Microsoft提供的一種免費(fèi)工具,可以實(shí)現(xiàn)不同的方法。以下是該工具的說明:

Moles是.NET中基于委托的測(cè)試存根和繞道的輕量級(jí)框架。

Moles可用于繞過任何.NET方法,包括密封類型中的非虛擬/靜態(tài)方法。

您可以將Moles與任何測(cè)試框架一起使用(它與此無(wú)關(guān))。


查看完整回答
反對(duì) 回復(fù) 2019-08-13
?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

我用過Wrapper來(lái)解決這個(gè)問題。創(chuàng)建一個(gè)包裝器對(duì)象并傳遞您的模擬方法。

請(qǐng)參閱Paul Irwin的“ 用于單元測(cè)試模擬靜態(tài)方法”,它有很好的例子。


查看完整回答
反對(duì) 回復(fù) 2019-08-13
  • 3 回答
  • 0 關(guān)注
  • 746 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)