Ожидание носорога - PullRequest
       19

Ожидание носорога

5 голосов
/ 18 июня 2011

Почему ответ ниже всегда нулевой в моем тесте?

SSO.cs

 public class SSO : ISSO
    {
        const string SSO_URL = "http://localhost";
        const string SSO_PROFILE_URL = "http://localhost";

        public AuthenticateResponse Authenticate(string userName, string password)
        {
            return GetResponse(SSO_URL);
        }

        public void GetProfile(string key)
        {
            throw new NotImplementedException();
        }

        public virtual AuthenticateResponse GetResponse(string url)
        {
            return new AuthenticateResponse();
        }
    }

    public class AuthenticateResponse
    {
        public bool Expired { get; set; }
    }

SSOTest.cs

 [TestMethod()]
public void Authenticate_Expired_ReturnTrue()
{
    var target = MockRepository.GenerateStub<SSO>();
    AuthenticateResponse authResponse = new AuthenticateResponse() { Expired = true };

    target.Expect(t => t.GetResponse("")).Return(authResponse);
    target.Replay();

    var response = target.Authenticate("mflynn", "password");


    Assert.IsTrue(response.Expired);
}

1 Ответ

7 голосов
/ 18 июня 2011

Ваши ожидания не верны. Вы определили, что ожидаете пустую строку в качестве параметра в GetResponse, но передаете значение SSO_URL. Таким образом, ожидание не соответствует, и вместо него возвращается ноль.

У вас есть два варианта, чтобы исправить это

Один из способов - установить IgnoreArguments () в ожидании

target.Expect(t => t.GetResponse("")).IgnoreArguments().Return(authResponse);

и другой способ - передать ваш SSO_URL в качестве параметра методу GetResponse, как это

target.Expect(t => t.GetResponse("http://localhost")).Return(authResponse);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...