Tag: xunit

Asp.Net核心unit testing异步控制器

我有这个测试: [Fact] public async void Can_Paginate() { //fake data var product1 = new Product { ProductId = 1, ProductName = “P1” }; var product2 = new Product { ProductId = 2, ProductName = “Product 2” }; var product3 = new Product { ProductId = 3, ProductName = “Product 3” }; var product4 = new Product […]

引用.NET Core XUnit项目中的标准dll

我使用的是最新版本的XUnit,我按照这些步骤启动了类库(.NET Core)项目。 我整个解决方案中的所有其他库仅使用4.6.1,因此我将pr​​oject.json中的框架部分更改为以下内容: { “frameworks”: { “net461”: { “dependencies”: { “Microsoft.NETCore.Platforms”: “1.0.1-rc2-24027” } } } } 在我的解决方案中,一切正常。 我能够运行测试,所有对其他库的引用工作正常,即使它们只有461。 基本上,在我的解决方案中,我有几个其他类库(.NET Core),我的XUnit库依赖它们,所以我只能通过visual studio引用它们,并且引用被添加到XUnit项目的project.json文件中。 出现了我需要执行以下操作的情况: 仅将XUnit项目复制到另一台开发人员计算机。 允许他编辑源代码,以便能够创建测试,但不允许他访问所有其他库/代码。 我想我可以简单地将所有其他dll复制到一个随机文件夹中,并能够从独立的XUnit项目中引用它们。 但是,情况并非如此,因为在尝试引用时,我收到一条错误消息,指出.NET Core项目无法引用标准dll。 有人能告诉我如何做到这一点吗?

使用XUnit断言exception

我是XUnit和Moq的新手。 我有一个方法,它将字符串作为参数。如何使用XUnit处理exception。 [Fact] public void ProfileRepository_GetSettingsForUserIDWithInvalidArguments_ThrowsArgumentException() { //arrange ProfileRepository profiles = new ProfileRepository(); //act var result = profiles.GetSettingsForUserID(“”); //assert //The below statement is not working as expected. Assert.Throws(() => profiles.GetSettingsForUserID(“”)); } 测试方法 public IEnumerable GetSettingsForUserID(string userid) { if (string.IsNullOrWhiteSpace(userid)) throw new ArgumentException(“User Id Cannot be null”); var s = profiles.Where(e => e.UserID == userid).SelectMany(e => […]

entity framework核心:记录单个数据库上下文实例的查询

使用EF Core(或任何ORM)我想跟踪ORM在我的软件中进行某些操作期间对数据库的查询次数。 我之前在Python下使用过SQLAlchemy,在这个堆栈上,这很容易设置。 我通常有一个unit testing,它针对一个场景的查询数量,针对内存中的SQLite数据库进行断言。 现在我想使用EF Core做同样的事情,并查看了Logging文档 。 在我的测试设置代码中,我按照文档说的那样做: using (var db = new BloggingContext()) { var serviceProvider = db.GetInfrastructure(); var loggerFactory = serviceProvider.GetService(); loggerFactory.AddProvider(new MyLoggerProvider()); } 但我遇到的问题我怀疑是以下结果(也来自文档): 您只需要使用单个上下文实例注册记录器。 注册后,它将用于同一AppDomain中上下文的所有其他实例。 我在测试中看到的问题表明我的记录器实现是在多个上下文中共享的(这与我阅读它们时的文档一致)。 并且因为a)我的测试运行器在并行运行测试而b)我的整个测试套件创建了数百个db上下文 – 它不能很好地工作。 问题/问题: 我想要的是什么? 即我可以使用仅用于该db上下文实例的db上下文注册记录器吗? 还有其他方法可以完成我想要做的事情吗?

模拟validation()调用

我正在进行unit testing以查看是否调用了一个方法。 [Fact] public void Can_Save_Project_Changes() { //Arrange var user = new AppUser() { UserName = “JohnDoe”, Id = “1” }; Mock mockRepo = new Mock(); Mock<UserManager> userMgr = GetMockUserManager(); userMgr.Setup(x => x.FindByNameAsync(It.IsAny())).ReturnsAsync(new AppUser() { UserName = “JohnDoe”, Id = “1” }); var contextUser = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, user.UserName), new Claim(ClaimTypes.NameIdentifier, […]