问题标签 [effort]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
737 浏览

c# - 将 Effort 与 Entity Framework 一起使用时,更新模型会导致从 DbContext 中删除接口

目前,我正在尝试将 Effort ( https://effort.codeplex.com/ ) 与我的 Entity Framework 6 解决方案一起使用,以允许在不需要数据库连接的情况下进行单元测试(请参阅http://www.codeproject.com/Articles/460175 /Two-strategies-for-testing-Entity-Framework-Effort)。一切都在我的项目中工作,这是DbContext带有接口和 Effort 所需的重载构造函数:

问题是,如果我.edmx通过选择“从数据库更新模型...”来更新文件,那么它会将上下文文件重新生成为:

Context.cs所以我每次都得回去手动更新上面的文件。[Key]此外,从POCO CCS_DEPT_TBL文件 中删除。

有什么方法可以设置我的实体框架项目,这样每次我从数据库更新模型时,它就不会破坏接口和重载的构造函数?TIA。

更新:

由于类是部分的,我只是确保将接口和重载的构造函数放在一个不会自动生成的单独文件中。

更新 2:

好的,明白了,只是将其添加为单独的文件,DEPTID从原始POCO文件中取出,但它仍将其放入DEPTID生成的文件中,因此在更新后构建中断,因为DEPTID同一类中有两个值:

那么,如何防止它DEPTID在生成的类文件中生成,因为它已经在上面的部分类文件中了?

0 投票
1 回答
566 浏览

c# - 您如何仅使用 Moq 执行与 Effort 相同的测试?

目前,我已经使用 Effort 设置了很多测试,包括数据访问层和业务逻辑层测试(参见https://effort.codeplex.com/)。我们已经在单元测试中使用了 Moq,我的老板想让事情变得简单,所以他想让我看看我是否可以将测试从 Effort 实现转移到我们只有 Moq 和 FakeDbSet(参见http:// aikmeng.com/post/62817541825/how-to-mock-dbcontext-and-dbset-with-moq-for-unit),使代码库更易于维护。

据我了解,Effort 基本上模仿了内存中的整个 SQL Server 数据库。因此,使用 Moq 设置所有内容似乎需要大量代码,以便仅使用它来运行测试。有人对此有任何想法吗?甚至可以在没有大量编码的情况下完成吗?有没有人有什么建议?TIA。

0 投票
1 回答
1127 浏览

entity-framework - 无论如何我可以将数据加载到内存中,而不是使用 .csv 文件进行单元测试吗?

无论如何我可以将数据加载到内存中,而不是使用 .csv 文件进行单元测试吗?

场景:我想将数据加载到内存中,以使用 Effort 框架创建假的 dbcontext 并执行操作。我需要以编程方式加载数据,而不是使用 Dataloader 和 .csv 文件。

适用于 .csv 文件的示例代码:

我只是在寻找替代品来加载数据,而不是使用 .csv 文件加载数据

0 投票
2 回答
1035 浏览

.net - 访问 DbSet 时出现 Effort (EF6) 异常(字​​典中不存在给定键)

事实证明这有点难以追查,但是当使用 Effort 测试 Entity Framework 6 时,我似乎在尝试访问其中一个 DBSet 时遇到 KeyNotFoundException(“字典中不存在给定的键”)错误存储库。

我注意到它适用于 DbContext 中的一个或两个 DbSet,但是一旦我开始向 DbContext 添加多个 DbSet,我就会收到上述错误。

示例代码(这是我的整个代码的简化,当我从 DbContext 中注释掉一些 DbSet 然后将它们放回时,错误似乎是随机的。我在模型上也有部分类,但它有时也会成功,所以看起来诡异的):

测试

DBContext 和 DbSets 模型

堆栈跟踪:

0 投票
1 回答
393 浏览

c# - 使用 Effort 和 TypeName 属性进行测试

我想测试一些代码,为了实现这一点,我需要伪造 DAL ( Entity Framework 6 - Code first) 中定义的 DbContext。它大部分进展顺利,但是当数据模型类使用该TypeName属性时我遇到了一个问题。我做了一个骨架来演示这个问题。

数据模型:

上下文定义

还有一个用一些数据生成假上下文的虚拟方法:

问题是TypeName属性。当它被注释掉时,测试通过。但是如果它被启用,我会被System.InvalidOperationException抛出,说

序列不包含匹配元素

总结一下,我的问题是:

  • 即使数据模型类具有属性,有没有一种方法可以在测试中使用 Effort
  • 如果没有,我应该采用什么替代方法来创建假 DbContext?
0 投票
0 回答
177 浏览

c# - 从内存数据库中提取不起作用

我开始使用 Effort 进行单元测试。

这是我的初始化代码:

然后,当我调试测试时,我可以在调试器中看到上面代码中的那些值在那里,它们被插入到内存数据库中,但获取查询不会返回它们。这是来自调试器的图像:在此处输入图像描述

这是返回 0 个元素的查询之一return unitOfWork.Context.Products.ToList();

任何人都知道可能导致问题的原因是什么?

更新:此代码通过:return unitOfWork.Context.Products.Local.ToList<Product>();

更新2:我解决了。方法中缺少保存更改SetupTest

0 投票
1 回答
640 浏览

unit-testing - 努力进行单元测试 - 添加关闭身份的记录

我正在使用 Effort (for EF4) 进行一些单元测试。

公司中的 ID 列是一个身份字段。执行上述查询后,发现ID值是1而不是100。在使用Effort时有什么方法可以控制Identity_insert

0 投票
2 回答
1574 浏览

asp.net-mvc - Entity Framework 6 在尝试使用 Effort 创建上下文时引发迁移异常

我正在尝试使用 Effort 来测试我的应用程序,但是如果在上下文中启用了代码优先迁移,那么它会引发以下异常:

System.InvalidOperationException:为上下文“XDbContext”启用了迁移,但数据库不存在或不包含映射表。使用迁移来创建数据库及其表,例如通过从包管理器控制台运行“更新数据库”命令。

如果我禁用迁移,那么一切正常。

我如何阻止实体甚至出于测试目的考虑迁移。

0 投票
1 回答
5986 浏览

c# - 努力单元测试实体框架6.1.3 DB-first

我在使用 Effort 框架(版本 1.1.4)对我的 DB 层进行单元测试时遇到问题。

我有一个使用实体框架 6.1.3 的数据库层,并且模型是使用数据库优先方法创建的,因此有一个*.edmx描述模型的文件。

我创建了一个部分类来公开单元测试使用的附加构造函数,如下所示:

简单的单元测试如下所示:

当我运行单元测试时,它会为该行引发异常:

{“提供程序未返回 ProviderManifest 实例。”} InnerException 消息:{“无法确定存储版本;需要有效的存储连接或版本提示。”}

我发现的其他帖子建议将文件ProviderManifestToken中的属性*.edmx从“2012”更改为“2008”。这似乎解决了这个问题,但在第一次尝试使用上下文时给了我另一个例外:

NotSupportedException 无法确定“System.Data.EntityClient.EntityProviderFactory”类型的提供者工厂的提供者名称。确保在应用程序配置中安装或注册了 ADO.NET 提供程序。

任何人都知道如何解决这个问题,以便我可以将 Effort 与实体框架 6.1.3 DB-first 方法一起使用?

我已经成功地能够使用 Effort(版本 1.1.4)对在 EF 4 和 EF 5 中使用 DB 优先方法创建的 DB 层进行单元测试——这就是为什么我认为 EF 版本可能会引起人们的兴趣......

0 投票
1 回答
1714 浏览

entity-framework-core - Entity Framework Core - 在内存提供程序中必填字段

在以前版本的实体框架中,我一直在使用 Effort ( https://effort.codeplex.com/ ) 进行单元测试。我决定为 EF Core 提供新的内存提供程序,并很快发现它不支持 OnModelCreating 中设置的 IsRequired() 和其他实体配置。有没有办法让它尊重这个配置?如果没有,这是否在要实施的待办事项列表中?甚至可能是内存提供者的替代品?

我希望能够使用测试步骤来交换上下文并在一些可以利用相同代码的集成测试场景中使用真实的数据库。这似乎是一个“很高兴拥有”,也许这就是 EF Core 努力的一个例子。我也找不到任何关于 EF Core 正在努力的信息。

我在 EF 的 Uservoice 页面上找不到任何内容(https://data.uservoice.com/forums/72025-entity-framework-feature-suggestions),如果它不可用,我会去那里。