相关疑难解决方法(0)

Mock.Of <Object> VS Mock <Object>()

我目前对如何嘲笑感到困惑.

我正在使用Moq.为了模拟对象,我通常以这种方式编写

 var mockIRepo = new Mock<IRepo>();
Run Code Online (Sandbox Code Playgroud)

但是,我需要为我的设置创建模拟对象.

Option1 以这种方式模拟仅包含属性的对象是否更好?

 var object = Mock.Of<Object>()
Run Code Online (Sandbox Code Playgroud)

Option2 或者这样

 var object = new Mock<Object>()
Run Code Online (Sandbox Code Playgroud)

我已经读过选项2有setupproperties这对我来说有点问题,因为我也可以在选项1中设置属性.

那有什么区别?或者,还有更好的方法?

c# testing unit-testing moq mocking

25
推荐指数
3
解决办法
9410
查看次数

EF6 DbSet <T>在Moq中返回null

我在我的应用程序中使用DbContext(EF6)设置了典型的存储库模式:

public class MyDbContext : EFContext<MyDbContext> {

    public MyDbContext () { }

    public virtual DbSet<CartItem> Cart { get; set; }
Run Code Online (Sandbox Code Playgroud)

和一个存储库:

public class GenericEFRepository<TEntity, TContext>
    where TEntity : class, new()
    where TContext : EFContext<TContext> {

    private readonly TContext _context;

    public GenericEFRepository(TContext context) {
        _context = context;
    }
    //...
    public virtual TEntity Insert(TEntity item) {
        return _context.Set<TEntity>().Add(item);
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用Moq 4.2(遵循本教程)通过创建模拟上下文来测试它:

        // Arrange
        var mockSet = new Mock<DbSet<CartItem>>();

        var mockContext = new Mock<MyDbContext>();
        mockContext.Setup(c => c.Cart).Returns(mockSet.Object);

        // Act …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing entity-framework moq entity-framework-6

8
推荐指数
1
解决办法
5579
查看次数

何时使用严格的模拟?

我正在尝试提出一种场景,其中应该使用严格的模拟。我想不到。

您何时使用严格的模拟,为什么?

tdd unit-testing moq mocking

2
推荐指数
1
解决办法
713
查看次数