簡體   English   中英

Rhinomocks存根法

[英]Rhinomocks stub method

是否有可能像微軟Fours中的填充一樣存在一種方法?

在這種情況下,我想存根DB調用,但繼續我的方法邏輯的其余部分。

public class Network
{
    public string GetUsers()
    {
       User users = GetUsersFromDB();
       return users.Formatted();
    }

測試:

Network network = MockRepositiory.GenerateStub<Network>();

network.Stub(x => x.GetUsersFromDB()).Return(myTestUserObject);

string result = network.GetUsers();

Assert.AreEqual(expected, result);

您很可能無法為GetUsersFromDB()設置存根的原因是此方法不是虛擬的或不是公共的。
因此,您可以將其設置為public virtual並設置存根。

但是,如果根據單一責任原則調整類並將DB訪問代碼提取到具有某些接口(如IDbAccess的單獨類中,則可能會IDbAccess ,例如

interface IDbAccess
{
    User GetUsersFromDB();
}

然后,您可以將接口作為依賴項注入到Network類中,並在那里使用它而不是使用DB訪問方法成員。
因此,出於測試目的,您可以只注入接口IDbAccess並運行測試,而無需為測試類(即Network生成存根。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM