我对单元测试非常陌生。我有以下需要编写测试方法的方法。请帮助我。
以下是我的方法:
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);
}
}
答案 0 :(得分:0)
如果要测试CheckDevice方法,则需要为其提供_httpContextAccessor的模拟。然后,您将可以使用不同的用户代理字符串运行此测试。