C# 莫青作品单位与lambda表达
我有类似的东西要测试:C# 莫青作品单位与lambda表达,c#,unit-testing,lambda,nunit,moq,C#,Unit Testing,Lambda,Nunit,Moq,我有类似的东西要测试: public void example(ModelView modelView) { //... var statustId= 1; var requests = _unitOfWork.RequestRepository.Get(m => m.RequestStatusId == statusId); var requests = _unitOfWo
public void example(ModelView modelView)
{
//...
var statustId= 1;
var requests = _unitOfWork.RequestRepository.Get(m => m.RequestStatusId == statusId);
var requests = _unitOfWork.RequestRepository.Get(m => m.RequestTypeId == modelView.RequestTypeId);
var oldRequests = _unitOfWork.RequestRepository.Get(m => m.Created == DateTime.Now.AddDays(-7));
//...
}
如何用不同的数据模拟所有的“GET”
这就是我到目前为止得到的:不确定表达式应该是什么样子,因为它使用的是函数中的变量
[Test]
public void Test()
{
//Arrange
_requestGenericRepo.Setup(m => m.Get(
It.Is<Expression<Func<Request, bool>>>(e => e.Equals(First GET - using local variable);
_requestGenericRepo.Setup(m => m.Get(
It.Is<Expression<Func<Request, bool>>>(e => e.Equals(Second GET - using variable from modelView));
_requestGenericRepo.Setup(m => m.Get(
It.Is<Expression<Func<Request, bool>>>(e => e.Equals(Third GET));
//Act
var response = _controller.Example( new ModelView
{
RequestTypeId= 1
});
//Assert
...
}
RequestRepository.Get方法的返回值是多少?您可以尝试使用SetupSequence并选择要测试的路径。比如:
_requestGenericRepo.SetupSequence(m => m.Get(It.IsAny<Expression<Func<Request, bool>>>())
.Returns(/*First call*/)
.Returns(/*Second call*/)
.Returns(/*Third call*/);
\u requestGenericRepo.SetupSequence(m=>m.Get(It.IsAny())
.返回(/*第一次调用*/)
.返回(/*第二次调用*/)
.返回(/*第三次呼叫*/);
这些表达式中的每一个都将在同一个用例中的测试方法中被调用吗?@Nkosi是的……我编辑了我的问题,但我很想知道是否有办法让它工作,并等待答案
_requestGenericRepo.SetupSequence(m => m.Get(It.IsAny<Expression<Func<Request, bool>>>())
.Returns(/*First call*/)
.Returns(/*Second call*/)
.Returns(/*Third call*/);