C# - Asp.net web API 测试项目 - 如何模拟用户和运行 特定用户下的测试用例

C# - Asp.net web API test project - how to impersonate a user and run test cases under a specific user

我正在从事 ASP.net Web api 项目。我添加了一个测试项目。在其中一个测试用例中,我使用 windows 身份验证连接到 SQL 服务器。当我 运行 在 Visual Studio 上测试用例在本地工作正常,因为我的帐户(我的 NT ID)有权访问 SQL 服务器。

但是当我们 运行 在我们的构建服务器上使用相同的测试用例时,测试用例失败说 Microsoft.AnalysisServices.AdomdClient.AdomdErrorResponseException: Either the user, 'domain\ttwp5434203$', does not have access to the 'Employee' database, or the database does not exist.

为了克服这个问题,我正在考虑模拟测试用例运行s 下的用户。

我在测试项目下的 App.Config 文件中添加了以下代码。

<system.web>
    <identity impersonate="true"
              userName="UID"
              password= "PWD" />
  </system.web>

此更改无效。我再次遇到同样的错误。我该怎么做才能确保在特定帐户下的任何机器 运行 上测试用例。

我希望使用的另一个选项是:Impersonate(IntPtr)。但我不确定如何在多个测试用例中使用此代码。

我现在 运行 我的测试用例使用 SimpleImpersonation 库。这个 nuget 包允许你模拟某个用户并且它真的很容易使用。

 [TestMethod]
    public void SearchUser()
    {
        var  credentials = new UserCredentials("domain", "UID", "PWD");
        var result = Impersonation.RunAsUser(credentials, LogonType.NewCredentials, () =>
        {
            //CODE INSDIE THIS BLOCK WILL RUN UNDER THE ID OF ANOTHER USER 
            dynamic actualResult = controller.SearchUser();
            //Assert
            Assert.IsNotNull(actualResult);
            return actualResult;
        });
    }