我该如何对静态扩展方法进行单元测试?

时间:2018-10-23 12:07:48

标签: c# unit-testing asp.net-core

我要进行单元测试的方法有时会转到此代码。

var resourceOwnerToken = 
      new TokenClient(_tokenClientEndpoint, MobileClient.ClientId, MobileClient.ClientSecret);

IdentityModel.Client.TokenResponse tokenResponse =
      await resourceOwnerToken.RequestResourceOwnerPasswordAsync(model.Phone, model.Password);

RequestResourceOwnerPasswordAsync是库中的静态扩展方法。

public static Task<TokenResponse> RequestResourceOwnerPasswordAsync
    (this TokenClient client, string userName, string password, string scope = null, 
     object extra = null, CancellationToken cancellationToken = default(CancellationToken));

当我开始测试时,tokenResponse的值为null,所以我遇到了一个错误。我尝试了模拟。安装程序,但是在扩展方法错误时设置无效。 我应该怎么做才能使tokenResponse具有值?

1 个答案:

答案 0 :(得分:1)

您有两种选择

1)使用垫片。 https://docs.microsoft.com/en-us/visualstudio/test/isolating-code-under-test-with-microsoft-fakes?view=vs-2017

2)在接口中包装静态类。

我通常会做第二个,因为我经常发现垫片的维护比包装类的开销更烦人。