以下代码是我试图设置一个没有setter的属性的尝试!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Moq;
namespace TestMoq
{
class Program
{
static void Main(string[] args)
{
var mock = new Mock<TestClass>();
mock.SetupProperty(f => f.VarWithNoSetter);
mock.Object.VarWithNoSetter = "Set";
Console.WriteLine(mock.Object.VarWithNoSetter);
Console.ReadLine();
}
}
public class TestClass
{
private string _varWithNoSetter;
public string VarWithNoSetter
{
get { return _varWithNoSetter; }
}
public TestClass()
{
}
}
}
答案 0 :(得分:8)
不确定
mock.SetupGet(f => f.VarWithNoSetter).Returns("Hi, Exitos!");
答案 1 :(得分:1)
是的,你可以,但你必须将该属性虚拟化,因为Moq将生成代理
public virtual string VarWithNoSetter
{
get { return _varWithNoSetter; }
}
或者您可以使用.SetUpGet
答案 2 :(得分:0)
对我而言,它不适用于SetUpGet,不会使属性成为虚拟。但是它可以通过使用Mock.Of&lt;&gt;:
来工作var mock = Mock.Of<TestClass>(m=>m.VarWithNoSetter == "the value");