第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

django 視圖中的依賴注入

django 視圖中的依賴注入

慕田峪9158850 2022-04-27 13:36:02
我想為我的 django 項(xiàng)目使用依賴注入。為此,我正在嘗試pinject包。就像在 ASP.NET 中一樣,所有依賴項(xiàng)都在構(gòu)造函數(shù)中給出,這非常好,因?yàn)樗苋菀诇y試。我也想在我的 django 項(xiàng)目中存檔類似的東西。我有一個簡單的視圖:class MySimpleView(View):    def __init__(self, dependency1, dependency2, **kwargs):        super().__init__(**kwargs)        ...我定義綁定的地方# di.pyclass AppBindingSpec(pinject.BindingSpec):    def configure(self, bind):        # do the bindings hereobj_graph = pinject.new_object_graph(binding_specs=[AppBindingSpec()])我希望像這樣使用它。# urls.pyurlpatterns = [    path('path/to/my/view', obj_graph.provide(MySimpleView).as_view()),]但不幸的是,django 不允許.as_view()從實(shí)例中調(diào)用 。有什么簡單的方法可以將依賴項(xiàng)注入到我的視圖中,以便我可以輕松地模擬和測試?
查看完整描述

1 回答

?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個贊

如果您的目標(biāo)是為自己提供一種簡單且安全的“模擬和測試”方式,那么您可能最好使用由提供的模擬庫unittest(順便說一下,它也很像 .NET 中的模擬)。有了這個,你可以做這樣的事情:


from unittest.mock import Mock, patch

from django.tests import TestCase


class MySimpleViewTestCase(TestCase):

    @patch('module_name.dependency2')

    @patch('module_name.dependency1.specific_method_or_attribute')

    def test_something_about_mysimpleview(self, mock_dependency1, mock_dependency2):

        mock_dependency1.return_value = Mock(some_attribute="foo", some_method.return_value="bar")

        mock_dependency2.return_value = 42


        # do your testing of MySimpleView


現(xiàn)在,當(dāng)測試運(yùn)行時(shí),將用模擬對象mock替換任何內(nèi)容。因此,當(dāng)運(yùn)行時(shí),它將返回,而將返回一個對象,該對象具有一個帶有值的屬性和一個返回的方法。module_name.dependency1.specific_method_or_attributemodule_name.dependency2module_name.dependency2()42specific_method()Mock"foo"some_method()"bar"


您可以使用它來模擬函數(shù)、類甚至模塊。


查看完整回答
反對 回復(fù) 2022-04-27
  • 1 回答
  • 0 關(guān)注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號