Automoq文档

时间:2013-06-04 17:29:28

标签: unit-testing automocking automoq

我开始使用Automoq。我试图做这样的事情:

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的想法吗?什么是好的资源/教程?

2 个答案:

答案 0 :(得分:0)

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

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);

答案 1 :(得分:0)

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

[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