2014-12-26 3 views
1

Как заглушить метод в рамках Fakes, чтобы возвращаемое значение изменялось в зависимости от значения параметра?Опоры с переменным параметром

Например, с учетом следующего интерфейса и теста, как создать заглушку в случае, когда value = 1, чтобы возвращаемое значение = «A», а когда значение = 2, возвращаемое значение = «B»:

public interface ISimple 
{ 
    string GetResult(int value); 
} 

public class Sut 
{ 
    ISimple simple; 

    public Sut(ISimple simple) 
    { 
     this.simple = simple; 
    } 

    public string Execute(int value) 
    { 
     return this.simple.GetResult(value); 
    } 
} 

[TestMethod] 
public void Test() 
{ 
    StubISimple simpleStub = new StubISimple(); 
    simpleStub.GetResultInt32 = (value) => { return "A";} // Always returns "A" 

    var sut = new Sut(simpleStub); 

    // OK 
    var result = sut.Execute(1) 
    Assert.AreEqual("A", result); 

    // Fail 
    result = sut.Execute(2); 
    Assert.AreEqual("B", result); 
} 

Возможно ли это?

ответ

1

Вот решение. Я нашел большой ресурс на подделках более в Codeplex, который я делю здесь для других, чтобы насладиться: http://vsartesttoolingguide.codeplex.com/releases/view/102290

[TestMethod] 
public void Test() 
{ 
    StubISimple simpleStub = new StubISimple(); 
    simpleStub.GetResultInt32 = (value) => { 
     switch(value) 
     { 
      case "A": 
      { 
       return "A"; 
       break; 
      } 
      case "B": 
      { 
       return "B"; 
       break; 
      { 
     } 
    } 

    var sut = new Sut(simpleStub); 

    // OK 
    var result = sut.Execute(1) 
    Assert.AreEqual("A", result); 

    // OK 
    result = sut.Execute(2); 
    Assert.AreEqual("B", result); 
} 
Смежные вопросы