2012-11-29 86 views
2

我有一個類,其中包含通過加載器類填充的屬性。簡單的例子:Moq和設置類中的屬性

class Employee : IEmployee 
{ 
    public string EmpFirstName {get; set} 
    public string EmpLastName {get; set} 
} 

public class EmpLoader(int employeeID) 
{ 
    public void Load(IEmployee emp) 
    { 
    emp.EmpFirstName = //lookup the employee using the EmployeeID 
    //... 
    } 
} 

我不知道如何去安排的事情,這樣一個嘲弄EmpLoaderLoad()方法在Employee特定值填充。喜歡的東西:

Employee myEmp = new Employee(); 
_empLoader = new Mock<EmpLoader>(); 
_empLoader.Setup(empL => empL.Load(myEmp)).Sets_myEmp_Properties_Somehow(); 

我使用起訂量的決定返回值什麼樣的時候回來之前Setup()方法,但不知道我是否可以使用它,或者通過第三設定在一個類屬性的另一種方法黨派班。可能是我在這裏;我不是Moq的專家,並且樂於接受建議。

+1

所以,基本上你要設置基於加載一些輸入模擬員工的財產? – rae1

+0

@ rae1n--完全正確。 Mike的答案看起來非常有希望。 – larryq

回答

2

您可以使用設置()的回調()方法加載數據:

Employee myEmp = new Employee(); 
Mock<EmpLoader> _empLoader = new Mock<EmpLoader>(); 
_empLoader.Setup(empL => empL.Load(myEmp)).Callback<IEmployee>((emp) => { 
    emp.EmpFirstName = "Steve"; 
    // ... Load all properties 
}