[英]Is it possible to set a property with no setter using Moq?
我做了一些研究。 我想使用moq並將其傳遞給MVC控制器,以便允許它在會話中設置一些值。 我寫了一些代碼,看看它是否有可能“打開”一個沒有setter的屬性。 只是不知道它是否可能......
以下代碼是我試圖設置一個沒有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()
{
}
}
}
當然:
mock.SetupGet(f => f.VarWithNoSetter).Returns("Hi, Exitos!");
是的,你可以,但你必須使該屬性虛擬,因為Moq將生成代理
public virtual string VarWithNoSetter
{
get { return _varWithNoSetter; }
}
或者您可以使用.SetUpGet
對我來說,它不適用於SetUpGet,不會使屬性成為虛擬。 但它通過使用Mock.Of <>工作:
var mock = Mock.Of<TestClass>(m=>m.VarWithNoSetter == "the value");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.