Jac*_*hor 0 c# unit-testing moq mocking
我在嘲笑我的控制器方法,我的控制器看起来像这样
我的控制器:
public class PController : BaseController
{
readonly IRFacade _repository;
public PController()
{
_repository = new RiFacade();
}
[CLSCompliant(false)]
public PController(IRFacade repositories)
{
if (repositories == null) throw new ArgumentNullException("repositories");
_repository = repositories;
}
public aMethod(String Id){
int[] arraynum = convert id to int[]
int numberthis = _repository.ActionFunction(arraynum);
..return stuff
}
Run Code Online (Sandbox Code Playgroud)
IRFacade我创建的界面看起来像这样
public interface IRFacade
{
int ActionFunction(int[] arrayOfNum);
}
Run Code Online (Sandbox Code Playgroud)
当我测试aMethod并且我必须模拟时,_repository我就像这样设置
var MockFacade = new Mock<IRFacade>();
// here fakeinput is a int[] varaible and aNumber is a int variable
MockFacade.Setup(r => r.ActionFunction(fakeinput)).Returns(aNumber);
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么我必须传递一个实际的int []变量fakeInput,我声明反对只是在r.ActionFunction(int[] avaraible)我设置模拟时传入参数类型?
当你设置这样的方法时:
MockFacade.Setup(r => r.ActionFunction(new[] {1,2,3})).Returns(5);
Run Code Online (Sandbox Code Playgroud)
如果且仅当具有数字1,2和3的数组作为参数传递时,您将其设置为返回5 .
如果您希望您的方法为任何输入返回5 ,则应该使用It.IsAny<T>().
MockFacade.Setup(r => r.ActionFunction(It.IsAny<int[]>())).Returns(5);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |