NSubstitute完全手冊(三)設定傳回值

下面的樣本中將涉及替代下面的介面定義:1 public interface ICalculator2 {3 int Add(int a, int b);4 string Mode { get; set; }5 }為方法設定傳回值要為替代執行個體上的一個方法調用設定傳回值,可以按正常調用該方法,然後緊跟著一個 NSubstitute 的 Returns() 擴充方法。1 [TestMethod]2 public void

NSubstitute完全手冊(七)設定多個傳回值

也可以配置在多次調用中分別返回不同的值。下面的樣本通過調用屬性來示範此功能,對於方法的調用是相同的。 1 public interface ICalculator 2 { 3 int Add(int a, int b); 4 string Mode { get; set; } 5 } 6 7 [TestMethod] 8 public void

NSubstitute完全手冊(八)替換傳回值

如果需要的話,一個方法或屬性的傳回值可以被設定多次。只有最後一次設定的值將被返回。 1 public interface ICalculator 2 { 3 int Add(int a, int b); 4 string Mode { get; set; } 5 } 6 7 [TestMethod] 8 public void Test_ReplaceReturnValues_ReplaceSeveralTimes() 9

NSubstitute完全手冊(十)清理已收到的調用

通過使用 ClearReceivedCalls() 擴充方法,可以使替代執行個體忘記先前的所有調用。比如說我們有一個 ICommand 介面,我們想讓 OnceOffCommandRunne r接收一個 ICommand 然後僅執行一次。 1 public interface ICommand 2 { 3 void Execute(); 4 } 5 6 public class OnceOffCommandRunner 7 { 8

NSubstitute完全手冊(十六)設定out和ref參數

通過使用 Returns() 回調或者 When..Do 文法可以設定 out 和 ref 的參數。1 public interface ILookup2 {3 bool TryLookup(string key, out string value);4 }對於上面的介面,我們可以配置其傳回值,並設定第二個參數的輸出: 1 [TestMethod] 2 public void Test_SetOutRefArgs_SetOutArg() 3

EntityFramework用法探索(四)Repository和UnitOfWork

以上一篇CodeFirst產生代碼為基礎,繼續探索使用方式。引入Repository模式,定義最簡單的IRepository介面,僅包含增刪改查介面,1 public interface IRepository<T>2 where T : class3 {4 IQueryable<T> Query();5 void Insert(T entity);6 void Update(T entity);7 void Delete(

NSubstitute完全手冊(十一)參數匹配器

參數匹配器可以用於設定傳回值和檢查接收到的調用。它提供了一種指定一個調用或一組調用的方式,這樣可以對所有匹配的調用設定一個傳回值,或者檢查是否接收到了匹配的調用。忽略參數通過使用 Arg.Any<T>() 可以忽略一個T類型的參數。 1 public interface ICalculator 2 { 3 int Add(int a, int b); 4 string Mode { get; set; } 5 } 6 7

NSubstitute完全手冊(十七)參數匹配器上的操作

除了指定調用,當替代執行個體接收到了匹配的調用時,參數匹配器還可以用於執行特定的操作,並指定巨集指令引數。這是一個相當罕見的需求,但在某些情況下可以使測試程式變得簡單一些。警告:一旦我們為替代執行個體添加有意義的行為,我們的測試和代碼將面臨過度指定和緊耦合的風險。對於類似的測試,通過抽象來更好地封裝行為可能是更好的選擇,甚至可以使用真實的協作對象並切換至 coarser-grained 測試。調用回呼函數假設被測試類別需要調用一個依賴對象的方法,並為其提供了一個回呼函數,當依賴對象調用結束時通過

NSubstitute完全手冊(十二)使用回呼函數和WhenDo文法

有時當收到一個特殊的調用時能執行一些代碼是非常有用的。我們在使用函數設定傳回值一節已經看到了類似的代碼。 public interface ICalculator { int Add(int a, int b); string Mode { get; set; } } [TestMethod] public void Test_CallbacksWhenDo_PassFunctionsToReturns() { var

EntityFramework用法探索(五)引入Unity

在上文的EntityFramework用法中,我們引入了Repository模式和UnitOfWork模式。探索還沒有結束,我們引入Unity依賴注入容器。那用Unity做什麼呢?在上文中,我們手工定義了CustomerRepository中DbContext的,1 DbContext context = new RETAILContext();2 DbContextAdapter contextAdaptor = new

NSubstitute完全手冊(十八)檢查調用順序

註:目前這個功能還在 NSubstitute.Experimental 名空間下,我們還在對其 API 和行為進行實驗。非常歡迎你來試一試,但是要注意其可能在後續的版本中有變化。請在討論群組中反饋意見。有時調用需要滿足特定的順序。就像已知的 "Temporal Coupling",其取決於調用收到的時間。理想情況下,我們可能會修改設計來移除這些耦合。但當不能移除時,憑藉 NSubstitute 我們可以斷言調用的順序。 1 public class Controller 2 {

NSubstitute完全手冊(十三)拋出異常

當一個成員被調用時,也可使用回調來拋出異常。 1 public interface ICalculator 2 { 3 int Add(int a, int b); 4 string Mode { get; set; } 5 } 6 7 [TestMethod] 8 [ExpectedException(typeof(Exception))] 9 public void

NSubstitute完全手冊索引

NSubstitute 是什嗎?NSubstitute 是一個 .NET 單元測試類比類庫。一直以來,開發人員對 mocking 類庫的文法的簡潔性有強烈的需求,NSubstitute 試圖滿足這一需求。簡單明了的文法可以讓我們將重心放在測試本身,而不是糾纏在測試替代執行個體的建立和配置上。NSubstitute 已嘗試將最常用的操作需求簡單化、易用化,並支援一些不常用的或探索性的功能,與此同時還儘可能地將其文法向自然語言靠近。NSubstitute 是為 Arrange-Act-Assert

NSubstitute完全手冊(十四)引發事件

有時,引發被替代的類型中定義的事件時非常必要的。例如下面這個例子: 1 public interface IEngine 2 { 3 event EventHandler Idling; 4 event EventHandler<LowFuelWarningEventArgs> LowFuelWarning; 5 event Action<int> RevvedAt; 6 } 7 8 public

NSubstitute完全手冊(十五)自動遞迴類比

替代執行個體一旦被設定屬性或方法,則將自動返回非NULL值。例如,任何屬性或方法如果返回介面、委託或純虛類*,則將自動的返回替代執行個體自身。通常這被稱為遞迴類比技術,而且是非常實用的。比如其可以避免顯式地設定每個替代執行個體,也就意味著更少量的代碼。諸如String和Array等類型,預設會返回空值而不是NULL。*註:一個純虛類是指一個類,其所有的公有方法和屬性都被定義為virtual或abstract,並且其具有一個預設公有或受保護地無參建構函式。遞迴類比比如說我們有如下類型定義:1

使用Unity進行AOP對象攔截

Unity是一款知名的依賴注入容器,其支援通過自訂擴充來擴充功能。在Unity軟體包內預設包含了一個對象攔截(Interception)擴充定義。本篇文章將介紹如何使用對象攔截功能來協助你分離橫切關注點(Separation of cross-cutting concerns)。對象攔截簡介對象攔截是一種AOP(Aspect-oriented

Unity容器中的物件存留期管理

IoC容器的物件存留期管理如果你一直在使用IoC容器,你可能已經使用過了一些物件存留期管理模型(Object Lifetime

IoC依賴注入容器Unity

IoC是什嗎?在軟體工程領域,“控制反轉(Inversion of Control,縮寫為IoC)”是一種編程技術,表述在物件導向編程中,可描述為在編譯時間靜態分析器並不知道具體被耦合的對象,而該對象是在運行時被對象裝配器綁定的。在傳統編程中,決定商務程序的對象是被靜態分配的。而在IoC中,商務程序取決於對象裝配器執行個體化提供的對象,這使利用抽象來定義對象間的互動成為可能。對象裝配器為了能綁定一個對象,要求該對象必須具備相容的抽象定義。例如類ClassA可以需要介面InterfaceI的功能,

EntityFramework用法探索(二)CodeFirst

Code First,顧名思義,要先寫Code,而不是先建立資料庫內容。同樣使用與上文 Database First 模式相同的例子,假設需要設計一個零售系統,我們先構建一個 Customer 類。 1 [Table("Customer", Schema = "STORE")] 2 public class Customer 3 { 4 [Key] 5 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 6

EntityFramework用法探索(三)CodeFirst流暢API

Code First Fluent API,使用流暢API來定義模型映射。同樣使用與上文 Database First 模式相同的例子,假設需要設計一個零售系統,我們先構建一個 Customer 類。1 public class Customer2 {3 public long Id { get; set; }4 public string Name { get; set; }5 public string Address { get; set; }6

總頁數: 61357 1 .... 5460 5461 5462 5463 5464 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.