Moq如何正确模拟仅设置属性

Chr*_*sic 14 .net c# moq

使用Moq处理公开的仅设置属性的接口的正确方法是什么?以前我已经添加了另一个访问者,但这已经渗透到我的域太远了随机throw new NotImplementedException()语句.

我只是想做一些简单的事情:

mock.VerifySet(view => view.SetOnlyValue, Times.Never());

但这会产生编译错误 The property 'SetOnlyValue' has no getter

Rub*_*ink 18

public class Xyz
{
    public virtual string AA { set{} }
}
public class VerifySyntax
{
    [Fact]
    public void ThisIsHow()
    {
        var xyz = new Mock<Xyz>();
        xyz.Object.AA = "bb";
        // Throws:
        xyz.VerifySet( s => s.AA = It.IsAny<string>(), Times.Never() );
    }
}
public class SetupSyntax
{
    [Fact]
    public void ThisIsHow()
    {
        var xyz = new Mock<Xyz>();
        xyz.SetupSet( s => s.AA = It.IsAny<string>() ).Throws( new InvalidOperationException(  ) );
        Assert.Throws<InvalidOperationException>( () => xyz.Object.AA = "bb" );
    }
}
Run Code Online (Sandbox Code Playgroud)