用于检查设备类型的方法的单元测试用例

时间:2019-05-17 10:55:17

标签: c# unit-testing

我对单元测试非常陌生。我有以下需要编写测试方法的方法。请帮助我。

以下是我的方法:

    private bool IsMobile()
    {
        var userAgent = _httpContextAccessor.HttpContext.Request.Headers["User-Agent"].ToString() ?? "";
        return new Regex(@"Android|BlackBerry|iPhone|iPad|iPod|IEMobile", RegexOptions.IgnoreCase | RegexOptions.Multiline).IsMatch(userAgent);
    }


    public DeviceTypesEnum CheckDevice()
    {
        string userAgent = _httpContextAccessor.HttpContext.Request.Headers["User-Agent"].ToString() ?? "";
        var tabletDevices = new Regex(@"ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle|nexus",
            RegexOptions.IgnoreCase | RegexOptions.Multiline);

        //Tablet Pc
        if (userAgent.ToLower().Contains("tablet pc"))
        {
            return DeviceTypesEnum.TabletPc;
        }

        var isMobile = IsMobile();
        // is desktop/ tablet block
        if (!isMobile)
        {
            return tabletDevices.IsMatch(userAgent) ? DeviceTypesEnum.Tablet : DeviceTypesEnum.Desktop;
        }

        // is mobile section block 
        var isPad = new Regex(@"ipad", RegexOptions.IgnoreCase | RegexOptions.Multiline).IsMatch(userAgent) ||
                    !(userAgent.ToLower().Contains("android") && userAgent.ToLower().Contains("mobile"));
        return isPad ? DeviceTypesEnum.Tablet : DeviceTypesEnum.Mobile;
    }

我已经尝试过了,但是失败了:

public class DetetctDeviceTest
{
    protected IDetectDevice Target;

    [TestInitialize]
    public virtual void Initialize()
    {

        Target = AutoMocker.CreateInstance<DetectDevice>();            
    }

    [TestMethod]
    public void CheckDeviceTest()
    {
        var obj = Target.CheckDevice();

        Assert.IsNotNull(obj);           

    }
}

1 个答案:

答案 0 :(得分:0)

如果要测试CheckDevice方法,则需要为其提供_httpContextAccessor的模拟。然后,您将可以使用不同的用户代理字符串运行此测试。