Wie zum Hohn eine readonly-Eigenschaft, deren Wert abhängig ist von einer anderen Eigenschaft von Mock
(Markiert durch die tags, die ich benutze moq).
Ich habe ein interface wie dieses:
interface ISource
{
string Name { get; set; }
int Id { get; set; }
}
interface IExample
{
string Name { get; }
ISource Source { get; set; }
}
In meiner Anwendung, konkrete Instanzen von IExample akzeptieren ein DTO (IDataTransferObject) als Quelle. Einige Eigenschaften für die konkrete Umsetzung von IExample sind einfach delegiert an die Quelle. So...
class Example : IExample
{
IDataTransferObject Source { get; set; }
string Name { get { return _data.Name; } }
}
Ich würde gerne eine standalone-mock IExample (standalone bedeutet, dass ich nicht verwenden können, eine aufgenommene variable, da mehrere Instanzen des IExample mock erstellt werden, die im Verlauf einer test) und setup der Attrappe, so dass IExample.Name gibt den Wert des IExample.Quelle.Name. Also, ich würde gern ein mock so etwas wie dieses:
var example = new Mock<IExample>();
example.SetupProperty(ex => ex.Source);
example.SetupGet(ex => ex.Name).Returns(what can I put here to return ex.Source.Name);
Im wesentlichen, ich möchte konfigurieren Sie den mock zurück, wie der Wert einer Immobilie, der Wert einer Eigenschaft ein Unterobjekt des mock.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie wahrscheinlich verwenden:
Den Wert an, der zurückgegeben wird dann bestimmt werden, wenn auf die Eigenschaft zugegriffen wird, und wird von
Name
Eigenschaft des mockSource
Eigenschaft..Returns(example.Object.Source.Name)
zumindest für neuere Versionen von Moq.