Можно ли установить свойство без установщика, используя Moq? - PullRequest
5 голосов
/ 19 марта 2012

Я занимаюсь исследованиями.Я хочу использовать moq и передать его контроллеру MVC, поэтому позвольте ему установить некоторые значения в сеансе.Я написал некоторый код, чтобы увидеть, возможно ли «открыть» свойство без установщика.Просто не знаю, возможно ли это ...

Следующий код был моей попыткой установить свойство без установки!

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()
        {
        }
    }
}

Ответы [ 3 ]

9 голосов
/ 19 марта 2012

Sure:

mock.SetupGet(f => f.VarWithNoSetter).Returns("Hi, Exitos!");
1 голос
/ 19 марта 2012

Да, вы можете, но вы должны сделать это свойство виртуальным, так как Moq сгенерирует прокси

.
public virtual string VarWithNoSetter
{
   get { return _varWithNoSetter; }
}

или вы можете использовать .SetUpGet

0 голосов
/ 19 января 2018

Для меня это не работает с SetUpGet, не делая свойство виртуальным.Однако это работает с использованием Mock.Of <>:

var mock = Mock.Of<TestClass>(m=>m.VarWithNoSetter == "the value");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...