NSubstitute完全手冊(一)入門基礎

2021-09-22 10:58:57 字數 2259 閱讀 7431

然後就可以建立乙個新的測試 fixture(可以選擇使用你最喜歡的ut測試框架,本文涉及的示例中我們使用mstest),開始思考從**入手。

首先,新增 using nsubstitute; 到當前的c#**檔案中,有了它我們就可以開始建立替身了。

現在,比如我們有乙個非常簡單的計算器介面:

1

public

inte***ce

icalculator25

event

eventhandler poweringup;

6 }

我們可以讓nsubstitute來建立型別例項的替代例項。可以建立諸如 stub、mock、fake、spy、test double 等,但當我們只是想要乙個能有一定程度控制的替代例項時,為什麼我們要困擾於此呢?

1

[testmethod]

2public

void

test_getstarted_getsubstitute()

3

現在,我們可以告訴被建立的替代例項,當方法被呼叫時返回乙個值:

1

[testmethod]

2public

void

test_getstarted_returnspecifiedvalue()

3

我們可以檢查該替代例項是否接收到了乙個指定的呼叫,或者未收到某指定呼叫:

1

[testmethod]

2public

void

test_getstarted_receivedspecificcall()

3

如果 received() 斷言失敗,nsubstitute 會嘗試給出有可能是什麼問題:

1

[testmethod]

2 [expectedexception(typeof

(receivedcall***ception))]

3public

void

test_getstarted_didnotreceivedspecificcall()

4

expected to receive a call matching:

add(

1, 2

)actually received no matching calls.

received

1 non-matching call (non-matching arguments indicated with '*'

characters):

add(*5*, *7*)

我們也可以對屬性使用與方法類似的 retures() 語法,或者繼續使用簡單的屬性 setter 來設定返回值。

1

[testmethod]

2public

void

test_getstarted_setpropertyvalue()

3

nsubstitute 支援引數匹配功能,可以設定引數規則,並斷言判斷是否接收到引數匹配的呼叫。

1

[testmethod]

2public

void

test_getstarted_matcharguments()

3

我們也可以在使用引數匹配功能的同時,傳遞乙個函式給 returns() ,以此來使替代例項具有更多的功能。

1

[testmethod]

2public

void

test_getstarted_passfunctoreturns()

3

returns() 也可通過構造乙個返回值序列來指定多個引數。

1

[testmethod]

2public

void

test_getstarted_multiplevalues()

3

最後,我們可以在替代例項上引發事件通知:

1

[testmethod]

2public

void

test_getstarted_raiseevents()3;

1112 calculator.poweringup +=raise.event();

1314

assert.istrue(eventwasraised);

15 }

NSubstitute完全手冊索引

nsubstitute 是乙個 net mocking 類庫。一直以來,開發者對 mocking 類庫的語法的簡潔性有強烈的渴望,nsubstitute 試圖滿足這一需求。簡單明瞭的語法可以讓我們將重心放在測試本身,而不是糾纏在測試替代例項的建立和配置上。nsubstitute 已嘗試將最常用的操作...

NSubstitute完全手冊索引

nsubstitute 是乙個 net mocking 類庫。一直以來,開發者對 mocking 類庫的語法的簡潔性有強烈的渴望,nsubstitute 試圖滿足這一需求。簡單明瞭的語法可以讓我們將重心放在測試本身,而不是糾纏在測試替代例項的建立和配置上。nsubstitute 已嘗試將最常用的操作...

NSubstitute完全手冊索引

nsubstitute 是乙個 net 單元測試模擬類庫。一直以來,開發者對 mocking 類庫的語法的簡潔性有強烈的需求,nsubstitute 試圖滿足這一需求。簡單明瞭的語法可以讓我們將重心放在測試本身,而不是糾纏在測試替代例項的建立和配置上。nsubstitute 已嘗試將最常用的操作需求...