是否可以使用类为单元测试创建虚拟数据?

chobo2

我正在尝试进行一些单元测试,并且我需要虚拟数据。我需要某些数据具有特定的值,而其他则只是随机的。

例如,我的服务层中有一个“ CreateProduct”方法,我想知道使用这种方法而不是在单元测试中手动制作产品是否是一个好主意。

从表面上看,这似乎是一个好主意,但我担心也许我需要嘲笑或成功地通过该方法进行操作。

CreateProduct将尝试将产品保存到数据库,但是我已经有一个标志,该标志将停止保存操作(用于工作单元场景,以防回滚)。

我正在使用EF 6-rc1并使用moq来模拟DataContext,我打算使用AutoFixture,但在此secnario中它不是开箱即用的,我开始感到自己正在使用太多新工具,所以也许我现在应该手动进行。

峰值编码

没有代码示例很难确切地知道您在做什么,但有时我会使用内存中使用an的此实现典型用法如下:IDataSetList

using System.Data.Entity;
using System.Linq;
using Moq;
using NUnit.Framework;

namespace EFMock
{
    internal interface IDataContext
    {
        IDbSet<DataItem> DataItems { get; set; }
    }

    class DataContext : DbContext, IDataContext
    {
        public IDbSet<DataItem> DataItems{ get; set; }
    }

    class DataItem
    {
        public int SomeNumber { get; set; }
        public string SomeString { get; set; }
    }

    /* ----------- */

    class DataUsage
    {
        public int DoSomething(IDataContext dataContext)
        {
            return dataContext.DataItems.Sum(x => x.SomeNumber);
        }
    }

    /* ----------- */

    [TestFixture]
    class TestClass
    {
        [Test]
        public void SomeTest()
        {
            var fakeDataItems = new [] {
                new DataItem { SomeNumber = 1, SomeString = "One" },
                new DataItem { SomeNumber = 2, SomeString = "Two" }};

            var mockDataContext = new Mock<IDataContext>();
            mockDataContext.SetupGet(x => x.DataItems).Returns(new FakeDbSet<DataItem>(fakeDataItems));

            var dataUsage = new DataUsage();
            var result = dataUsage.DoSomething(mockDataContext.Object);

            Assert.AreEqual(2, result);
        }
    }
}

我还有一个名为“ FakeO”的NuGet包,可用于创建一些伪造的对象,其中某些数据是特定值,而某些则是随机的:

var fakeDataItems = FakeO.Create.Fake<DataItem>(10, // create an IEnumerable of 10 items
    x => x.SomeNumber = FakeO.Number.Next(),        // set to a random number
    x => x.SomeString = "Always This String");      // set to a specific string

这种测试要记住的一件事是,IQueryable对aList使用a会使用Linq2Objects而不是Linq2Entities,因此某些Linq查询的结果将有所不同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用StaticLoggerBinder对类进行单元测试

来自分类Dev

SQL Server单元测试:是否可以在“预测试”脚本中创建临时表并在主测试中使用它们?

来自分类Dev

使用EPPlus的单元测试类

来自分类Dev

Java:是否可以使用“变量”字段创建类?

来自分类Dev

是否可以创建动态单元测试?

来自分类Dev

是否可以使用libgdx和Android Studio 1.1进行单元测试?

来自分类Dev

如何在单元测试中设置不同的类路径以使用Spring加载资源

来自分类Dev

是否可以使用Codeception为某些测试关闭JavaScript?

来自分类Dev

是否可以使用PHPUnit对除类文件以外的php文件进行单元测试?

来自分类Dev

您可以在单元测试项目中使用Visual Studio数据库项目来为功能测试设置一个空数据库吗?

来自分类Dev

是否可以为此Expression评估程序类的私有方法编写单元测试?

来自分类Dev

使用实体框架是否可以使Datacontext类为静态

来自分类Dev

为Builder类编写单元测试

来自分类Dev

是否可以使用Django的ORM查询表而无需在模型中为其创建类?

来自分类Dev

使用IStringLocalizer <T>的单元测试类

来自分类Dev

使用单元测试模拟服务类

来自分类Dev

是否可以使用Hexagon SDK运行基于GoogleTest的单元测试?

来自分类Dev

是否可以使用Orika映射器为某些类创建一种配置?

来自分类Dev

我可以使用C#对VB代码进行单元测试吗?

来自分类Dev

单元测试,是否应该将要测试的类子类化?

来自分类Dev

在单元测试时创建虚拟CreateShell方法

来自分类Dev

是否可以使用Cognos BI中的数据为单元格着色?

来自分类Dev

是否可以在qt单元测试中以单独的方法设置要测试的数据?

来自分类Dev

是否可以使用指针创建类的实例?

来自分类Dev

C#单元测试:是否可以使用条件访问代替Debug.Assert?

来自分类Dev

是否可以使用 liquibase 加载更多测试数据

来自分类Dev

我可以使用 nodejs 管理 sdk 对 Firestore 安全规则进行单元测试吗?

来自分类Dev

使用 mockito 创建单元测试

来自分类Dev

是否可以使用反射动态创建类?

Related 相关文章

  1. 1

    使用StaticLoggerBinder对类进行单元测试

  2. 2

    SQL Server单元测试:是否可以在“预测试”脚本中创建临时表并在主测试中使用它们?

  3. 3

    使用EPPlus的单元测试类

  4. 4

    Java:是否可以使用“变量”字段创建类?

  5. 5

    是否可以创建动态单元测试?

  6. 6

    是否可以使用libgdx和Android Studio 1.1进行单元测试?

  7. 7

    如何在单元测试中设置不同的类路径以使用Spring加载资源

  8. 8

    是否可以使用Codeception为某些测试关闭JavaScript?

  9. 9

    是否可以使用PHPUnit对除类文件以外的php文件进行单元测试?

  10. 10

    您可以在单元测试项目中使用Visual Studio数据库项目来为功能测试设置一个空数据库吗?

  11. 11

    是否可以为此Expression评估程序类的私有方法编写单元测试?

  12. 12

    使用实体框架是否可以使Datacontext类为静态

  13. 13

    为Builder类编写单元测试

  14. 14

    是否可以使用Django的ORM查询表而无需在模型中为其创建类?

  15. 15

    使用IStringLocalizer <T>的单元测试类

  16. 16

    使用单元测试模拟服务类

  17. 17

    是否可以使用Hexagon SDK运行基于GoogleTest的单元测试?

  18. 18

    是否可以使用Orika映射器为某些类创建一种配置?

  19. 19

    我可以使用C#对VB代码进行单元测试吗?

  20. 20

    单元测试,是否应该将要测试的类子类化?

  21. 21

    在单元测试时创建虚拟CreateShell方法

  22. 22

    是否可以使用Cognos BI中的数据为单元格着色?

  23. 23

    是否可以在qt单元测试中以单独的方法设置要测试的数据?

  24. 24

    是否可以使用指针创建类的实例?

  25. 25

    C#单元测试:是否可以使用条件访问代替Debug.Assert?

  26. 26

    是否可以使用 liquibase 加载更多测试数据

  27. 27

    我可以使用 nodejs 管理 sdk 对 Firestore 安全规则进行单元测试吗?

  28. 28

    使用 mockito 创建单元测试

  29. 29

    是否可以使用反射动态创建类?

热门标签

归档