sách gpt4 ai đã đi

c# - 依赖于 HttpContext 的单元测试

In lại 作者:行者123 更新时间:2023-12-04 00:33:16 26 4
mua khóa gpt4 Nike

我需要测试一些依赖于当前上下文的静态方法。现在,我当然可以使用 HttpContextWrapper 从我自己的代码中删除这种依赖性。问题在于我在这些方法中使用的第 3 方 API。他们依赖于 HttpContext,所以我对此无能为力。但是,我想要做的是使用我的 HttpContextBase cài đặt HttpContext.

所以我的代码看起来像这样:

public static bool IsSignedUpUser()
{
//This calls IsSignedUpUser with the production context
return IsSignedUpUser(new HttpContextWrapper(HttpContext.Current));
}

public static bool IsSignedUpUser(HttpContextBase context)
{
HttpCookie objCookie = SomeExternalAPIThatReliesOnHttpContextBeingSet();

return (objCookie != null)
}

我想做的是:

HttpContext.Current = context; //where context is a mocked HttpContextBase

这样,当第 3 方 API 在 HttpContext 中查找查询字符串、cookie 值等时,它不会抛出 NullReferenceException.

为什么这不是骗局?

在被引用为欺骗的问题的代码中,作者看起来完全可以控制,没有外部依赖。我正在使用依赖于 HttpContext 的第三方库,我无法更改它们的方法签名以接受 HttpContextBase 所以我需要一种方法来分配我的 HttpContextBase đến HttpContext.

如果这是不可能的,到目前为止我被引导相信它不是,那么好的答案应该建议如何删除这些依赖项。 500 - 内部服务器错误至少有一个好的建议。

1 Câu trả lời

在我看来,你应该用你注入(inject)的自定义接口(interface)方法替换对 SomeExternalAPIThatReliesOnHttpContextBeingSet 的调用,然后可以像其他任何方法一样模拟它。

关于c# - 依赖于 HttpContext 的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14780112/

26 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com