Entity framework 仅在运行单元测试时返回null的LINQ查询

Entity framework 仅在运行单元测试时返回null的LINQ查询,entity-framework,visual-studio,unit-testing,datacontext,Entity Framework,Visual Studio,Unit Testing,Datacontext,我有一个公共方法,用于将用户登录到我的web应用程序。我正试图通过VS2013中“单元测试项目”中的“单元测试”.cs文件测试此方法 这是我的测试方法- [TestClass] public class UserTests { [TestMethod] public void Test_LogInUser() { Assert.IsTrue(UserActions.LogInUser("testusername", "testpassword!"));

我有一个公共方法,用于将用户登录到我的web应用程序。我正试图通过VS2013中“单元测试项目”中的“单元测试”.cs文件测试此方法

这是我的测试方法-

[TestClass]
public class UserTests
{
    [TestMethod]
    public void Test_LogInUser()
    {
          Assert.IsTrue(UserActions.LogInUser("testusername", "testpassword!"));
    }
}
如您所见,我将两个参数传递给我的方法。在“LogInUser”方法中,我然后使用“testusername”参数并在LINQ查询中使用它,以查看本地数据库中是否存在此用户。我正在使用实体框架自定义数据上下文与数据库通信,如图所示-

 var query = _db.Customer.FirstOrDefault(
            c => c.Username == username);

问题是我的查询返回null,但是如果我在运行的应用程序中调试相同的方法,查询将返回结果。如果我怀疑这是导致我的查询返回null的原因,那么我可以做些什么来让我的单元测试识别这个DataContext?

通常,您测试的方法应该与任何外部依赖项隔离。但这始终是程序员的选择。感谢您的回复,我在网上看到的大多数回复都建议它们应该是独立的。但是从逻辑上讲,我应该能够测试应用程序将运行的实际逻辑,否则我看不出为什么单元测试值得。是的,单元测试的目的是确保函数按照“预期”工作。单元测试应该只测试代码的“单元”。如果您开始测试“流”,那么您的测试将流经您正在测试的方法中调用的几个方法。为了编写纯粹而有效的单元测试,您需要查看IoC、mocking等。我不确定,如果这是有意义的,可能会有一些专家在那里,所以可以评论它。信息丰富的答案谢谢。我已经看过了嘲弄,但我不想把时间花在它上,除非它确实是正确的方向。