如何为类创建对象?

时间:2013-12-19 10:56:08

标签: c# .net oop xunit

我尝试将一些值传递给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价值。我想通过硬核地址值或不传递CommandRestClient来为serverAddress类创建一个对象。请帮我 谢谢。

1 个答案:

答案 0 :(得分:1)

通常,您将创建一个名为CommandRestClientTest的xunit类来测试CommandRestClient。您可以对该类中的ServerAddress常量进行硬编码,以对serverAddress进行硬编码,并将其传递给您在该xunit类中创建的每个CommandRestClient实例。

请记住,如果您实际上正在测试send方法到某个集成测试的地方。要成为纯单元测试,您将模拟外部交互并仅在CommandRestClient中测试业务逻辑

在Unit中,您通常将其置于标记为[Setup]的初始化中,但xunit鼓励您在每个方法中创建对象。

示例代码(尚未编译)

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

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

        //test, assert etc
    }
}