首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Automoq文档

Automoq文档
EN

Stack Overflow用户
提问于 2013-06-05 01:29:28
回答 2查看 1.4K关注 0票数 2

我开始使用Automoq了。我试着这样做:

代码语言:javascript
复制
mocker.GetMock<IMyObjectToTweak>();
var line = mocker.Resolve<IMyObjectToTweak>();

line.PropertyOne = .75;
line.PropertyTwo = 100;

MyCalc calc = new MyCalc();
calc.Multiply(line);
Assert.AreEqual(75, line.result);

此命令运行但失败。我的属性没有被设置。我是不是错过了Automoq的概念?什么是好的资源/教程?

EN

回答 2

Stack Overflow用户

发布于 2013-06-05 07:17:59

要使用Moq设置属性(这是Automoq用来创建模拟对象的方法),您必须使用不同的调用- SetupSetupGetSetupProperty

代码语言:javascript
复制
var line = mocker.Resolve<IMyObjectToTweak>();
// each does the same thing - "tells" PropertyOne to return .75 upon get
line.Setup(l => l.PropertyOne).Returns(.75);
line.SetupGet(l => l.PropertyOne).Returns(.75);
line.SetupProperty(l => l.PropertyOne, .75);
票数 0
EN

Stack Overflow用户

发布于 2013-06-05 12:11:17

我建议在您的Sut (被测系统)中公开一个Result属性

代码语言:javascript
复制
[TestClass]
public class SomeTest : ControllerTestBase
{
    [TestMethod]
    public void MethodNameOrSubject_ScenarioOrCondition_ExpectedBehaviourOrReturnValue()
    {
        var mock = _autoMoqContainer.GetMock<IMyObjectToTweak>();
        var line = _autoMoqContainer.Resolve<IMyObjectToTweak>();

        mock.Setup(x => x.PropertyOne).Returns(.75);
        mock.Setup(x => x.PropertyTwo).Returns(100);

        MyCalc calc = new MyCalc();
        calc.Multiply(line);
        Assert.AreEqual(75, calc.Result);
    }
}

public interface IMyObjectToTweak
{
    double PropertyOne { get; set; }
    int PropertyTwo { get; set; }

}

public class MyCalc
{
    public double Result { get; set; }

    public void Multiply(IMyObjectToTweak line)
    {
        Result =  line.PropertyOne*line.PropertyTwo;
    }
}

无关-但请阅读我在AutoMocking http://www.dotnetcurry.com/ShowArticle.aspx?ID=767上的更多帖子

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16923976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档