代码之家  ›  专栏  ›  技术社区  ›  OpenStack

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

  •  0
  • OpenStack  · 技术社区  · 7 年前

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

    Microsoft.AnalysisServices.AdomdClient.AdomdErrorResponseException: Either the user, 'domain\ttwp5434203$', does not have access to the 'Employee' database, or the database does not exist.

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

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

    这种改变没有奏效。我又犯了同样的错误。如何确保任何机器上的测试用例在特定帐户下运行。

    Impersonate(IntPtr) . 但我不确定如何跨多个测试用例使用此代码。

    1 回复  |  直到 7 年前
        1
  •  1
  •   OpenStack    7 年前

    我现在使用 SimpleImpersonation 图书馆。这个nugget包允许你模拟一些用户,它非常容易使用。

     [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;
            });
        }