下面的樣本中將涉及替代下面的介面定義:1 public interface ICalculator2 {3 int Add(int a, int b);4 string Mode { get; set; }5 }為方法設定傳回值要為替代執行個體上的一個方法調用設定傳回值,可以按正常調用該方法,然後緊跟著一個 NSubstitute 的 Returns() 擴充方法。1 [TestMethod]2 public void
有時當收到一個特殊的調用時能執行一些代碼是非常有用的。我們在使用函數設定傳回值一節已經看到了類似的代碼。 public interface ICalculator { int Add(int a, int b); string Mode { get; set; } } [TestMethod] public void Test_CallbacksWhenDo_PassFunctionsToReturns() { var
在上文的EntityFramework用法中,我們引入了Repository模式和UnitOfWork模式。探索還沒有結束,我們引入Unity依賴注入容器。那用Unity做什麼呢?在上文中,我們手工定義了CustomerRepository中DbContext的,1 DbContext context = new RETAILContext();2 DbContextAdapter contextAdaptor = new
註:目前這個功能還在 NSubstitute.Experimental 名空間下,我們還在對其 API 和行為進行實驗。非常歡迎你來試一試,但是要注意其可能在後續的版本中有變化。請在討論群組中反饋意見。有時調用需要滿足特定的順序。就像已知的 "Temporal Coupling",其取決於調用收到的時間。理想情況下,我們可能會修改設計來移除這些耦合。但當不能移除時,憑藉 NSubstitute 我們可以斷言調用的順序。 1 public class Controller 2 {
Unity是一款知名的依賴注入容器,其支援通過自訂擴充來擴充功能。在Unity軟體包內預設包含了一個對象攔截(Interception)擴充定義。本篇文章將介紹如何使用對象攔截功能來協助你分離橫切關注點(Separation of cross-cutting concerns)。對象攔截簡介對象攔截是一種AOP(Aspect-oriented
IoC是什嗎?在軟體工程領域,“控制反轉(Inversion of Control,縮寫為IoC)”是一種編程技術,表述在物件導向編程中,可描述為在編譯時間靜態分析器並不知道具體被耦合的對象,而該對象是在運行時被對象裝配器綁定的。在傳統編程中,決定商務程序的對象是被靜態分配的。而在IoC中,商務程序取決於對象裝配器執行個體化提供的對象,這使利用抽象來定義對象間的互動成為可能。對象裝配器為了能綁定一個對象,要求該對象必須具備相容的抽象定義。例如類ClassA可以需要介面InterfaceI的功能,
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