Nunit脚本测试缓存数据
本文关键字:数据 缓存 测试 脚本 Nunit | 更新日期: 2023-09-27 18:01:39
我正在尝试编写一个示例NUnit测试脚本来检查缓存中的值
我写了这样的代码 [TestFixture]
class Authorization
{
class AutherizationEntity
{
public int UserID { get; set; }
public int OperationCode { get; set; }
public bool permission { get; set; }
}
[SetUp]
public void Initialize()
{
//if (HttpContext.Current.Cache["UserRights"] == null)
//{
List<AutherizationEntity> AuthorisationObject = new List<AutherizationEntity>();
for (int i = 0; i < 5; i++)
{
AutherizationEntity AEntity = new AutherizationEntity();
AEntity.OperationCode = 10;
AEntity.permission = true;
AEntity.UserID = i;
AuthorisationObject.Add(AEntity);
}
HttpContext.Current.Cache.Insert("UserRights", AuthorisationObject); //Here i am getting the exception in NUnit
//}
}
[TestCase]
public void AuthorizeUser()
{
int UserId = 1;
int OperationCode = 10;
Boolean HaveRight = false;
List<AutherizationEntity> AuthEntity = new List<AutherizationEntity>();
AuthEntity = (List<AutherizationEntity>)HttpContext.Current.Cache.Get("UserRights");
foreach (AutherizationEntity Auth in AuthEntity)
{
if ((Auth.UserID == UserId) && (Auth.OperationCode==OperationCode))
{
HaveRight = Auth.permission;
}
}
Assert.AreEqual(HaveRight, true);
}
}
但是当我试图运行脚本与NUnit我得到一个异常
Authorization.AuthorizeUser ():设置:系统。NullReferenceException:对象引用没有设置为对象的实例。
你能帮帮我吗?
NUnit没有在web上下文中运行,因此HttpContext.Current
为null。如果你想测试,你需要手动创建一个we上下文。
您可以为您的httpcontext创建一个模拟类。请用谷歌搜索mock httpcontext
,你会找到一些可能对你有用的链接。
当测试绑定到HttpContext的代码时,你必须依赖抽象并使用假的/存根的http上下文。有关该主题的更多信息,请参阅此问题。
不幸的是,缓存对象(和缓存类)不容易伪造,因为它是一个密封类。方法是在缓存对象周围创建一个带有相应接口的包装器类,并在测试中使用/stub/mock。
你可以在web应用程序之外访问缓存类,但在这种情况下,你可能不想这样做。可以通过引用System来访问缓存。Web组装和使用HttpRuntime类。
using System.Web;
using System.Web.Caching;
…
Cache cache = HttpRuntime.Cache;