我对单元测试非常新。我有以下方法需要写一种测试方法。请帮助我。
以下是我的方法:
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的模拟。然后,您将能够使用不同的用户代理字符串进行此测试。