mardi 21 avril 2015

Unit Test for two classes inherit an Interface

I have an two classes inherit an interface, but both classes should have a paramter pass into the constructor to identidy what class the application would need. I am trying to test one (GetAvailablity) method on (AvailablityRepoData) class when i create an instance of AvailablityRepoData i am getting an error for non-virtual method. i would really appreciate if someone can point me to the right direction.

public interface IAvailablityRepo
   {
     string  GetAvailablity(Availablity availablity);
}
public class AvailablityRepoData: IAvailablityRepo
{

    public AvailablityRepoData(string websetting) {
    }
    public string GetAvailablity(Availablity availablity) {
        return "Data";
    }
}

public class AvailablityRepoWeb:IAvailablityRepo
{
    public AvailablityRepoWeb(string DataSetting) {
    }
    public string GetAvailablity(Availablity availablity) {
        return "Web";
    }
}

public class Availablity
{
    public virtual string Id {
        get;
        set;
    }
    public virtual string  Status {
        get;
        set;
    }
}

        var a = new Availablity() { Id = "111", Status = "A"};
        Mock<IAvailablityRepo> mockRepo = new Mock<IAvailablityRepo>();
        Mock<IAvailablityRepo> RepoData = new Mock<IAvailablityRepo>();
        RepoData.Setup(x => x.GetAvailablity(It.IsAny<Availablity>  ())).Returns("pass");
        var result = RepoData.Object.GetAvailablity(a);

Aucun commentaire:

Enregistrer un commentaire