2011-04-27 50 views
8

错误:犀牛制品问题与私人二传手存根

You are trying to set an expectation on a property that was defined to use PropertyBehavior. Instead of writing code such as this: mockObject.Stub(x => x.SomeProperty).Return(42); You can use the property directly to achieve the same result: mockObject.SomeProperty = 42;

var x = MockRepository.GenerateStub<MyClass>(); 
x.Stub(s => s.Items).Return(new List<Item>()); 

public class MyClass 
{ 
    public virtual IEnumerable<Item> Items 
    { 
     get {return _items;} 
     private set {_items = value;} 
    } 
} 

我在做什么错?

+1

找到解决方案。退出该项目,以便我可以选择适用的工具。例如Moq – Daniel 2012-08-07 15:19:09

回答

7

我认为使用模拟而不是存根可以解决这个问题,但可能有更好的方法,我错过了。

 var x = MockRepository.GenerateMock<MyClass>(); 
     x.BackToRecord(BackToRecordOptions.PropertyBehavior); 
     SetupResult.For(x.Items).Return(new List<Item>()); 
     x.Replay(); 
+0

我有同样的问题,使用Mock也适用于我。不了解存根的这个限制。 – 2011-10-03 10:53:14

2

一个更清洁的方式比应该是:

var x = MockRepository.GenerateMock<MyClass>(); 
x.Stub(s => s.Items).Return(new List<Item>()); 

我只是不明白为什么GenerateStub不起作用。

+0

可以证实这一点,我相信这是一个错误,它不适用于GenerateStub – xhafan 2012-08-07 14:09:15

0

我收到了同样的信息。我的问题是我试图在一个具体的类上存储一个非虚拟属性。