问题标签 [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 投票
1 回答
1825 浏览

c# - 在 Effort 数据库上为单元测试创​​建存储过程

我有一个使用 Entity Framework 调用存储过程的函数:

我想使用 Effort 为它创建一个单元测试。Initialize对于每个单元测试,我已经努力(和 NMemory 数据库)来模拟数据库(基于我的上下文) ,例如:

在哪里EffortProviderFactory

我测试了添加这样的存储过程创建:

但它会抛出一个NotSupportedException. 我该怎么做,最好的方法是什么?

0 投票
2 回答
2841 浏览

entity-framework-6 - 在 DB First 方法中使用 Effort 和 EF6

我正在使用带有 EF6 的模型优先方法,并且我正在尝试使用Entity Framework Effort来开发内存测试。

这是我在测试中所做的:

我的实体:

当我运行测试时,我收到一条错误消息,说我没有指定任何正常的 [key] 属性,因为我没有使用 Code First 方法。因此, OnModelCreating 方法被调用并且不应该被调用。

有没有办法在 Model First 设计中使用 Effort 而无需添加这些属性?

谢谢 !

0 投票
0 回答
274 浏览

c# - “Effort.EntityConnectionFactory”的类型初始化程序在 MOQ 单元测试中引发异常

我正在使用 MOQ 和 Effort 来模拟数据库以进行单元测试。我努力创建内存数据库并用运行时数据填充表,并使用 MOQ 来模拟存储过程。当我一次运行所有测试时,与努力相关的单元测试失败,当我重新运行失败的测试时,一切都是绿色的。当我尝试调试所有测试时,我得到了上述异常。

我在这里粘贴我的 DatabaseContext 代码。

最小起订量代码片段:

努力代码片段:

单元测试方法里面
//Act ActivitiesTestData.AddTestData(_context); var 结果 = _activityRepository.ErrorDetailbyErrorId(errorId, timeZoneOffset);

0 投票
0 回答
45 浏览

unit-testing - 忽略一些外键的预加载存储库

我们正在使用 Effort 针对 EF6 模型编写单元测试。这样做时效果很好,但设置存储库的初始状态可能很困难。例如(并忽略了很多关系),我们可能正在测试使用预订对象的代码。该预订具有合同记录,而合同记录又具有客户记录。客户记录具有链接到位置记录的办公室记录,该位置记录链接到国家/地区记录。客户记录还链接到语言记录,等等。在编写测试之前,需要准备好几十条记录,尽管测试并没有访问其中的大多数。除了设置存储库的工作外,这还会影响每个测试的启动时间。有没有办法在不创建我们实际上不需要的记录的情况下初始化 Effort,

0 投票
0 回答
161 浏览

entity-framework - 使用带有 ASP.NET 样板的测试框架“努力”时出现问题

我在 ABP 项目中使用Effort进行测试时遇到问题。

据我了解,我的问题出在EntityFramework.DynamicFilters上,GitHub 中有一个问题在讨论这个问题。但似乎确实有一种解决方法对我有用。

当我运行我的测试时,所有使用 DynamicFilters 的操作都不起作用。(其他测试确实按预期工作。)

这个问题有解决方案吗?如果是这样,我需要安装哪个版本?

我想在我的测试中继续使用 DynamicFilters,因为这是我的业务逻辑的一部分。

我正在使用以下版本:

  • ABP 3.8.2(模板 ASP.NET MVC 5.x)
  • Effort 1.3.9(也用 1.3.0 和 1.3.3 测试过)
  • NMemory 2.0.3(也用 1.1.2 测试过)

非常感谢您的帮助!


这是错误日志:


这些是我正在使用的过滤器:

0 投票
1 回答
202 浏览

entity-framework - Effort + Autofac:没有返回从 DbProviderServices 继承的对象

我使用Effort,Effort.EF6作为我的内存数据库来测试我的Web API 2应用程序。

我正在使用Autofac我的 DI 解析。

这是我的代码Startup.cs

在我的CvManagementDbContext.cs

[更新]

这是我的package.config

Effort的配置Web.config

当我的应用程序启动控制台中抛出的异常时,即:

'实体框架提供程序类型'Effort.Provider.EffortProviderServices、Effort、Version=1.0.0.0、Culture=neutral、PublicKeyToken=6a46696d54971e6d'的'Instance'成员未返回从'System.Data.Entity'继承的对象。 Core.Common.DbProviderServices'。实体框架提供者必须从此类继承,并且“实例”成员必须返回提供者的单例实例。这可能是因为提供者不支持 Entity Framework 6 或更高版本;有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882

我在做什么错?

0 投票
1 回答
97 浏览

c# - 努力支持的单元测试冲突

我继承了这个项目的一些测试。他们在针对 SQL 数据库运行时正在工作,但速度很慢。我正在尝试切换到使用 Effort。
.NET4.5、EF6.2、努力 1.3.10。

我的单元测试有两个可能相关的问题。

我是否并行运行测试并不重要。

1)如果我一次运行不止一个,我会得到

保存或接受更改失败,因为多个“Center.Shared.Person”类型的实体具有相同的主键值。确保显式设置的主键值是唯一的。确保在数据库和实体框架模型中正确配置了数据库生成的主键。使用实体设计器进行数据库优先/模型优先配置。使用“HasDatabaseGeneratedOption”流式 API 或“DatabaseGeneratedAttribute”进行 Code First 配置。---> System.InvalidOperationException:保存或接受更改失败,因为多个“Center.Shared.Person”类型的实体具有相同的主键值。确保显式设置的主键值是唯一的。确保在数据库和实体框架模型中正确配置了数据库生成的主键。使用实体设计器进行数据库优先/模型优先配置。使用“HasDatabaseGeneratedOption”流式 API 或“DatabaseGeneratedAttribute”进行 Code First 配置。

因此,测试似乎没有正确隔离。
跟踪代码,我可以看到 CreateTransient 被调用,但它显然不够瞬态。

在 TestInitialize 例程中,我尝试重置数据库。

这是非常复杂的代码,所以如果我们需要发布更多代码,我们需要很长时间才能找到兔子洞的底部。创建 PoC 可能更好。

2)如果我独立运行测试,我会遇到不同的问题。同样,这些通过了 SQL 但不是 Effort。

创建包括

查找包括

我知道它正在调用 CreateDbContext,但跟踪代码,据我所知,它似乎是具有相同 ID 的同一个数据库。

是什么导致测试被隔离?
以及关于为什么 Find 在使用内存数据库时会停止工作的任何想法?

0 投票
1 回答
274 浏览

c# - “序列不包含匹配元素”在使用 Effort 的 EF 映射中设置 HasColumnType("varchar")

我有以下实体框架(v6.1.3)映射:

在我的数据库中,这两列的数据类型 = "varchar" 并且大小是正确的: 在此处输入图像描述

但是,我的一些单元测试因此错误而失败:

System.InvalidOperationException:序列不包含匹配元素

我在一篇相关文章中读到,如果将无效类型传递给HasColumnType方法,则可能会出现上述错误,但在我的情况下,“varchar”应该是有效的。

有什么想法可能是错的吗?

以下是这些属性在我的实体中的定义方式:

下面是一个测试在第一行失败的例子:

_context在这种情况下是类型MemoryEnterprisePaycorCodeFirstContext

继承自我的public class EnterprisePaycorCodeFirstContext : DbContext

该类是我初始化我的实体映射的地方:

这可能是因为我使用的是Effort MemoryContext 与 Real DB 上下文吗?

0 投票
1 回答
190 浏览

c# - ASP.NET Effort CsvLoader 不返回数据

我正在使用带有 Code First 的 Entity Framework 6,并且我想模拟我的 DbContext 以进行单元测试。因为我需要大量用于单元测试的测试数据,所以我想使用 Entity Framework Effort ( https://entityframework-effort.net/ ) 从 csv 文件中加载它们。

我没有收到任何错误,但我也没有从 csv 文件中获得任何数据。我得到的只是一个没有数据的 DbContext(代码中的 FapContext)。

你有什么建议可以解决我的问题吗?

使用 NUnit 进行单元测试:

CSV 文件:

0 投票
1 回答
148 浏览

c# - 如何将努力与反向 Poco 生成器结合使用

所以我是 Visual Studio 2017,EF6,我正在使用这个 T4 模板https://marketplace.visualstudio.com/items?itemName=SimonHughes.EntityFrameworkReversePOCOGenerator来生成我的上下文类

作为测试的忠实拥护者,我已经对单元测试有 100% 的覆盖率,但现在我想做集成测试,我可以调用系统的多个部分并通过更改 - 但当然我想这样做而不触及真正的磁盘数据库。

因此,经过一番搜索后,我找到了 Effort https://entityframework-effort.net/,对我来说,这正是我想要使用的。我可以在内存中创建一个数据库,用我想要的任何装置填充它,然后从我系统的各个部分调用多个方法。但是,我试图找出的事情是如何让它在我的情况下工作我尝试过 DBConnectionFactory、EntityConnectionFactory、ObjectConnectionFactory 并且每次我收到错误消息时:-

“EffortException:数据库尚未初始化”。

这是我在设置中使用的代码块:-

当我到达 saveChanges 时,我得到一个异常,提示我添加了我已经完成的 .CreateIfNotExists() ,但是,我仍然得到错误。我可以在它工作的各种链接上看到示例和示例......但是我不想放弃我的 t4 模板,因为它给了我我想要的东西。

我有点迷茫,我想知道是否有人使用过反向 poco 生成器来创建上下文并将其与 Effort 结合使用。我很想同时使用两者,如果有人可以给我一个指针,以便我可以在内存数据库中进行体面的集成测试,我会像沙子一样开心

问候朱利安

这是 Poco 中从 t4 模板生成的方法