Tag: integration testing

在AutoFixture自定义上调用Dispose方法

我正在使用AutoFixture自定义来测试访问SQL Compact DB的存储库。 测试完成后立即删除此数据库对我非常有帮助。 因为db是在自定义构造函数中创建的,所以我认为删除它的最佳位置是dispose方法。 我想的代码是: internal class ProjectRepositoryCustomization : ICustomization { private readonly String _dbLocation; public ProjectRepositoryCustomization() { var tempDbLocation = Path.Combine(Path.GetTempPath(), “TempDbToDelete”); if (!Directory.Exists(tempDbLocation)) { Directory.CreateDirectory(tempDbLocation); } _dbLocation = Path.Combine(tempDbLocation, Guid.NewGuid().ToString(“N”) + “.sdf”); } public void Customize(IFixture fixture) { DataContextConfiguration.database = _dbLocation; var dataContextFactory = new BaseDataContextFactory(); var projRepository = new ProjectRepository(dataContextFactory); fixture.Register(() […]

使用集成测试Web Api

所以我发现在[Authorize]标签上有些东西让我有所启发,但没有什么可以解决我的问题。 我的场景是我有Web Api方法,我希望使用RestSharp进行集成测试。 但是,RestSharp正在获取我的登录页面,而不是调用的结果。 [Authorize] public Item GetItem([FromBody] int id) { return service.GetItem(id); } 该产品使用自定义登录系统,我真正想要的是一种只为集成测试禁用[授权]徽章的方法。 但是我读到你可以允许匿名用户,它会“禁用”徽章,所以在解决方案中,我有一个集成测试项目,在那个项目中我有一个App.config文件。 在那个文件中,我把: 但这似乎也不起作用。 任何有关正在发生的事情的解释,为什么它不起作用以及如何才能使这项工作将不胜感激。 我试图设置一个Thread.CurrentPrincipal但是没有用(也许我做错了 – 你能在代码中设置“任何”授权吗?)。 如果有帮助,则在httpmodule中处理身份validation。

我应该如何设置集成测试以将测试数据库与Entity Framework一起使用?

我正在为应用程序编写集成测试,但无法找到有关如何为我的集成套件设置测试数据库的最佳实践。 我正在使用Entity Framework代码优先的ASP.NET MVC4应用程序。 我可以确认我的测试项目中的测试默认与我的机器上的本地开发数据库通信。 这并不理想,因为我希望每次运行测试时都有一个新的数据库。 如何设置我的测试项目以便我的测试与单独的实例进行通信? 我假设可以设置SQL Server Compact Edition实例,但我不知道如何配置它。