相关疑难解决方法(0)

在汇编()中汇总值时访问Expect()的原始参数

是否可以在组装Returns对象时访问用于调用模拟期望的参数?

这是所涉及对象的存根,鉴于此,我试图模拟一个集合:

Class CollectionValue {
    public Id { get; set; }
}
Class Collection {
    private List<CollectionValue> AllValues { get; set; }
    public List<CollectionValue> GetById(List<int> ids) {
        return AllValues.Where(v => ids.Contains(v.Id));
    }
}
Run Code Online (Sandbox Code Playgroud)

给定将用于模拟对象的CollectionValues测试列表,如何设置期望来处理CollectionValues列表中ID的每个可能排列,包括组合现有ID和不存在ID的调用?我的问题来自于希望在一次通话中建立所有可能的期望; 如果无法访问原始参数,我可以轻松地设置每次我想在给定调用中测试的确切期望.

这是我希望做的,"???" 表示访问用于调用GetById的参数(符合It.IsAny限制的参数)的方便位置:

CollectionMock.Expect(c => c.GetById(It.IsAny<List<int>>())).Returns(???);
Run Code Online (Sandbox Code Playgroud)

c# moq

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

如何在单元测试中使用Moq在异步方法中返回传递的参数?

我对如何使用Moq-Setup-Return构造的问题感到困惑.

首先我的设置:

某些类型为IRepository-Interface的存储库必须实现StoreAsync-Method,该方法返回StoreResult对象,并将存储的实体作为属性包含在内.

using System.Threading.Tasks;
using Moq;
using Xunit;

namespace Tests
{
    public class Entity { }

    public class StoreResult
    {
        public Entity Entity { get; set; }
    }

    public interface IRepository
    {
        Task<StoreResult> StoreAsync(Entity entity);
    }

    public class Tests
    {
        [Fact]
        public void Test()
        {
            var moq = new Mock<IRepository>();
            moq.Setup(m => m.StoreAsync(It.IsAny<Entity>())).Returns(e => Task.FromResult<Task<StoreResult>>(new StoreResult {Entity = e}));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我尝试为IRepository-Interface编写一个Mock-Objekt,但我不知道如何编写Return-Statement,以便StoreResult-Object包含作为StoreAsync-Function参数给出的实体.

我在Moq ReturnsAsync()中读到了有关参数MOQ的这个主题:返回传递给方法的值.

我试过了

moq.Setup(m …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq .net-core

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

标签 统计

c# ×2

moq ×2

.net-core ×1

unit-testing ×1