Quantcast
Channel: Active questions tagged return-value - Stack Overflow
Viewing all articles
Browse latest Browse all 209

Why the method doesn't work, however the same algorithm in another method works?

$
0
0

I have a database with Entity Framework, using a repository design pattern. There's a method in my repository which gets two inputs, an entity and an IQueryable<Entity> collection. The method algorithm should return another entity from the collection, based on the entity input (for the sake of simplicity imagine a dating app where the userA gets userB as a recommendation, based on userA's preferences).

I have a test class library for testing the repository, using nUnit and MOQ. I setup the mock correctly to return a fake user list. and then I tested the method.

Here is the twist. The unit test fails, because the repository method returns null. However if I copy and paste the algorithm right into the unit test it returns the correct data. What's wrong? How is that possible? In the below code I commented the right and wrong stuff...

Repository method:

public IUser SearchForDate(IUser entity, IQueryable<USERS> users){        var userPartner = users.Where(x => x.Interested == entity.Male)            .Where(x => x.MinAge < entity.Age)            .Where(x => x.MaxAge > entity.Age)            .Where(x => x.WantToDate == true).FirstOrDefault();        return userPartner;}

At setup:

this.userRepo.Setup(x => x.GetAllIUsers()).Returns(testUsers);this.userRepo.Setup(x => x.GetAll()).Returns(testUsers2.AsQueryable());IUserRepository Repo = this.userRepo.Object;

At unit test:

[TestCase("Andrew", "Angela")]public void SearchForPartner_ReturnsTheCorrectPartner(string userName, string partnerName){        //Assert - Act        var users = Repo.GetAll();        var userNeedsPartner = users.Single(x => x.Nickname == userName); //this return the correct user - Andrew        var partner = Repo.SearchForDate(userNeedsPartner, Repo.GetAll()); //NOT GOOD, WHY????Even if I use users instead of Repo.GetAll() - this mothafucka returns null.        var partnerForUser = Repo.GetAll().Where(x => x.Interested == userNeedsPartner.Male)           .Where(x => x.MinAge < userNeedsPartner.Age)           .Where(x => x.MaxAge > userNeedsPartner.Age)           .Where(x => x.WantToDate == true).FirstOrDefault(); //GOOD, WHY??? - This returns the correct user - Angela        //Arrange        Assert.That(partner.Nickname, Is.EqualTo(partnerName)); //NULLReferenceException...}

Viewing all articles
Browse latest Browse all 209

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>