2013-12-19 97 views
0

我嘗試將一些值傳遞給httpserver。 這是我的班級如何爲類創建對象?

public interface ICommandRestClient 
{ 
    IRestResult Send(IMessageEnvelope envelope); 
} 
public class CommandRestClient : ICommandRestClient 
{ 
    private readonly string _serverAddress; 

    /// <summary> 
    /// Use to configure server address 
    /// </summary> 
    /// <param name="serverAddress">Configured serveraddress</param> 
    public CommandRestClient(string serverAddress) 
    { 
     _serverAddress = serverAddress; 
    } 

    public IRestResult Send(IMessageEnvelope envelope) 
    { 
    //do 
    } 
} 

及其工作。現在我試着爲Send方法寫一些Xunit測試類。爲此,我需要創建一個對象來訪問CommandRestClient類。但我沒有serverAddress值。我想通過強化地址值或不通過serverAddress來爲CommandRestClient類創建一個對象。請幫我 謝謝。

+0

做一個適當的值了(單或工廠)爲無論你在CommandRestClient執行測試。如果測試*使用* ICommandRestClient,那麼你可能會嘲笑(並且完全忘記serverAddress)。 – user2864740

+0

您的主題不反映您的帖子。 – BDR

回答

1

通常,您將創建一個名爲CommandRestClientTest的xunit類來測試CommandRestClient。您可以對該類中的ServerAddress常量進行硬編碼,以便對serverAddress進行硬編碼並將其傳遞給您在該xunit類中創建的每個CommandRestClient實例。

請記住,如果您實際上正在測試send方法到某個集成測試的位置。要成爲一個純粹的單元測試,你可以模擬外部交互,只測試CommandRestClient中的業務邏輯

在單元中,你通常會把它放在標記爲[Setup]的初始化中,但是xunit鼓勵你在每個方法中創建對象。

示例代碼(沒有編譯它)

public class CommandRestClientTest 
{ 
    const string testServerAddress = "localhost:8080"; 

    [Fact] 
    public void TestSomeMethod() 
    { 
     CommandRestClient commandRestClient = new CommandRestClient(testServerAddress); 

     //test, assert etc 
    } 
} 
+0

是這樣的嗎? private readonly CommandRestClient _commandRestClient = new CommandRestClient(「http:// localhost:8088 /」); – user3044294