单元测试服务层

时间:2016-09-12 12:33:33

标签: asp.net-mvc unit-testing

我是单元测试的新手。 我正在开发一个带有服务层的MVC项目,我在那里执行所有业务逻辑和访问数据库(通过存储库模式)

我创建了一个项目来对我的业务逻辑进行单元测试,例如:

我想测试的服务层示例逻辑:

public static bool HasPermissionToSomething(MyDomain domain)
{
    if((domain.prop1 == true || domain.prop3 == false) && domain.prop2 == false)
         return true;

    return false;      
}

所以我创建了一个像这样的单元测试(使用XUnit)

[Fact]
public void HasPermissionToSomethingTest()
{
    var domain = MockDomain();

    var hasPermission = MyService.HasPermissionToSomething(domain);

    Assert.Equal(hasPermission, true);
}

这是测试我的服务层的好方法吗?我的考试是好的吗?

由于

1 个答案:

答案 0 :(得分:1)

你正朝着正确的方向前进。您需要稍微增强单元测试,以便它更多地声明它正在测试的内容。

[Fact]
public void HasPermissionToSomethingTest()
{
    var domain = MockDomain {prop1 = true, prop2 = true, prop3=true};

    var hasPermission = MyService.HasPermissionToSomething(domain);

    Assert.Equal(hasPermission, true);
}

并且,您需要更多的单元测试来涵盖触发真假回报的各种条件。对于这个测试,Xunit的理论将有所帮助,因此您不需要那么多测试。

[Theory, InlineData(true, true, true), InlineData(true, true, false)]
    public void ShouldGrantPermission(bool prop1, bool prop2, bool prop3)
    {
        var domain = MockDomain {prop1 = prop1, prop2 = prop2, prop3 = prop3};

        var hasPermission = MyService.HasPermissionToSomething(domain);

        Assert.Equal(hasPermission, true);
    }