không nhất thiết Tôi cố gắng vá một lớp được khởi tạo bởi lớp mà tôi đang cố gắng kiểm tra, nhưng nó không hoạt động. Tôi đã đọc các tài liệu khác nhau nhưng vẫn chưa tìm thấy những gì tôi đang làm sai. Dưới đây là đoạn mã:Không thể vá lớp được tạo ra bởi lớp được kiểm tra bằng cách sử dụng
Trong tests/Test.py
:
from module.ClassToTest import ClassToTest
class Test(object):
@mock.patch('module.ClassToPatch.ClassToPatch', autospec = False)
def setUp(self, my_class_mock):
self.instance = my_class_mock.return_value
self.instance.my_method.return_value = "def"
self.class_to_test = ClassToTest()
def test(self):
val = self.class_to_test.instance.my_method() #Returns 'abc' instead of 'def'
self.assertEqual(val, 'def')
Trong module/ClassToPatch.py
:
class ClassToPatch(object):
def __init__(self):
pass
def my_method(self):
return "abc"
Trong module/ClassToTest.py
:
from module.ClassToPatch import ClassToPatch
class ClassToTest(object):
def __init__:
# Still instantiates the concrete class instead of the mock
self.instance = ClassToPatch()
Tôi biết trong trường hợp này tôi có thể dễ dàng tiêm phụ thuộc, nhưng đây chỉ là một ví dụ. Ngoài ra, chúng tôi sử dụng một lớp duy nhất cho mỗi chính sách tệp, với tệp có tên như lớp, do đó đặt tên nhập khẩu lạ.
Hãy thử @ mock.patch ('module.ClassToTest.ClassToPatch', autospec = False) –
Trong tương lai, vui lòng tạo mã mẫu của bạn thành [MCVE] (http://stackoverflow.com/help/mcve); có một số lỗi trong mã được đăng của bạn và bạn không thể dựa vào một người quen thuộc đủ để giải quyết vấn đề ngay lập tức phát hiện vấn đề và đưa ra giải pháp. –
Ok tôi sẽ lưu ý về nó – sixtstorm1