相关疑难解决方法(0)

如何在Moq实体框架中调用SqlQuery

我已经能够DbSet使用此链接模拟来自Moq的实体框架.

但是,我现在想知道如何模拟对SqlQuery的调用.不确定这是否可行或者如何依赖于模拟的db上下文知道正在调用什么"查询".

以下是我想要嘲笑的内容.

var myObjects = DbContext.Database
    .SqlQuery<MyObject>("exec [dbo].[my_sproc] {0}", "some_value")
    .ToList();
Run Code Online (Sandbox Code Playgroud)

我目前还没有尝试任何东西,因为不知道如何开始嘲笑这个例子.

的嘲讽DbSet是下方再次重申,我可以正确模拟返回DbSetMyObject的,但现在我试图嘲弄返回列表SQLQuery对MyObject的.

var dbContext = new Mock<MyDbContext>();
dbContext.Setup(m => m.MyObjects).Returns(mockObjects.Object);

dbContext.Setup(m => m.Database.SqlQuery... something along these lines
Run Code Online (Sandbox Code Playgroud)

c# entity-framework moq dbcontext

19
推荐指数
3
解决办法
1万
查看次数

6
推荐指数
1
解决办法
5696
查看次数

对在同一对象上调用另一个公共函数的函数进行单元测试的正确方法是什么?

虽然我知道这个问题/答案(单元测试一种调用另一种方法的方法),但仍然不确定什么是对同一类调用另一个公共方法的方法进行单元测试的最佳方法?

我做了一个示例代码(也可以在这里看到:dotnetfiddle.net/I07RMg)

public class MyEntity
{
    public int ID { get; set;}
    public string Title { get; set;}
}

public interface IMyService
{
    MyEntity GetEntity(int entityId);
    IEnumerable<MyEntity> GetAllEntities();
}

public sealed class MyService : IMyService
{
    IRepository _repository;

    public MyService(IRepository repository)
    {
        _repository = repository;
    }

    public MyEntity GetEntity(int entityId)
    {
        var entities = GetAllEntities();
        var entity = entities.SingleOrDefault(e => e.ID == entityId);

        if (entity == null)
        {
            entity = new MyEntity { ID = -1, …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing design-patterns

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