Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 最小起订量单元试验_Asp.net Mvc 3_Moq - Fatal编程技术网

Asp.net mvc 3 最小起订量单元试验

Asp.net mvc 3 最小起订量单元试验,asp.net-mvc-3,moq,Asp.net Mvc 3,Moq,我正在使用Moq进行单元测试,我正在尝试编写我的第一个单元测试。我的层是“Controller=>Service=>Repository” (我使用的是unity和repository模式。) 每当我运行单元测试时,实际值总是0,就像\u service.getequipmstates().Count()=0。我不知道我哪里做错了。请建议 我的单元测试代码如下所示: private ITestService _service; private Mock<ITestRepository>

我正在使用Moq进行单元测试,我正在尝试编写我的第一个单元测试。我的层是“Controller=>Service=>Repository”

(我使用的是unity和repository模式。)

每当我运行单元测试时,实际值总是
0
,就像
\u service.getequipmstates().Count()=0
。我不知道我哪里做错了。请建议

我的单元测试代码如下所示:

private ITestService _service;
private Mock<ITestRepository> RepositoryMoc; 

[TestInitialize]
public void Initialize() { 
    RepositoryMoc= new Mock<ITestRepository>(); 
    _service = new TestService(RepositoryMoc.Object) 
}
[TestMethod]
public void GetEquipmentState() {   
    var stateList = new[] { new State { ID = 1, Desc= "test" } };         
    RepositoryMoc.Setup(es => es.GetStates(true)).Returns(stateList );     
    Assert.AreEqual(1, _service.GetStates().Count());           
}
私有ITestService\u服务;
私人模拟仓库;
[测试初始化]
public void Initialize(){
RepositoryMoc=新模拟();
_服务=新的测试服务(RepositoryMoc.Object)
}
[测试方法]
public void GetEquipmentState(){
var stateList=new[]{newstate{ID=1,Desc=“test”};
RepositoryMoc.Setup(es=>es.GetStates(true)).Returns(stateList);
AreEqual(1,_service.GetStates().Count());
}

您已使用prameter true完成methode GetState的设置

RepositoryMoc.Setup(es => es.GetStates(true)).Returns(stateList);
但是您在Assert语句中的调用是针对不带参数的方法GetState的。GetState方法是使用默认参数声明的,还是必须使用函数(一个带bool参数,一个不带bool参数)

只要像这样在assert语句中进行调用,它就会工作

Assert.AreEqual(1, _service.GetStates(true).Count());           

我已经在我的一个解决方案中复制了您的代码,测试顺利通过

    private Mock<IAccessor> RepositoryMoc;
    private Controller _service;

    [TestMethod]
    public void TestMethod()
    {
        // Arrange
        _service = new Controller();
        RepositoryMoc = new Mock<IAccessor>();

        _service.Accessor = RepositoryMoc.Object;

        var stateList = new[] { new State { ID = 1, Desc = "test" } };
        RepositoryMoc.Setup(es => es.GetStates(true)).Returns(stateList);

        // Act & Assert
        Assert.AreEqual(1, _service.GetStates().Count());           
    }
private Mock RepositoryMoc;
专用控制器服务;
[测试方法]
公共void TestMethod()
{
//安排
_服务=新控制器();
RepositoryMoc=新模拟();
_service.Accessor=RepositoryMoc.Object;
var stateList=new[]{newstate{ID=1,Desc=“test”};
RepositoryMoc.Setup(es=>es.GetStates(true)).Returns(stateList);
//行动与主张
AreEqual(1,_service.GetStates().Count());
}

代码是否与您的解决方案中的代码完全相同?

请同时发布
TestService.GetStates()
的代码。