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



我对单元测试非常新。我有以下方法需要写一种测试方法。请帮助我。

以下是我的方法:

    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);           
    }
}

如果要测试checkDevice方法,则需要为其提供_httpcontextaccessor的模拟。然后,您将能够使用不同的用户代理字符串进行此测试。

相关内容

最新更新