Tôi có một công việc mà tôi có một DbContext IDisposable. Tôi muốn đơn vị kiểm tra công việc này mà không cần nhấn vào cơ sở dữ liệu. Tôi phải làm gì để làm điều này?Làm thế nào để đối phó với một kho lưu trữ IDisposable với Unity?
Im sử dụng lắp ráp Fakes mặc định 'của microsoft.
Công việc của tôi:
public void Work()
{
do
{
//code here
using (var repository = new Repository<User>())
{
repository.Save(user);
}
} while (true);
}
Tôi đang cố gắng để kiểm tra và trong phần này của bài kiểm tra nó không thành công bởi vì nó thực sự tạo ra một thể hiện mới của lớp Repository.
Phương pháp thử nghiệm của tôi:
using (ShimsContext.Create())
{
Data.Repository.Fakes.ShimRepository<Domain.Fakes.ShimUser>.Constructor = (a) => { };
Data.Repository.Fakes.ShimRepository<Domain.Fakes.ShimUser>.AllInstances.SaveT0 = (a, b) =>
{
};
var service = GetService();
service.Work(); //Throws exception
}
Làm thế nào tôi có thể giả phương pháp Save
này?
xem Dependency Injection - bạn cần cho phép tham số được truyền vào Work() Hoặc ít nhất là vào dịch vụ nếu không nó luôn tạo ra một thực tế. –
Tôi không quen với Hàng giả, nhưng có lẽ nó không đủ đầy đủ tính năng cho nhu cầu của bạn. Tôi biết điều này là tầm thường với một thư viện như Moq (https://github.com/Moq/moq4). –
Nó sẽ không tầm thường với Moq, kể từ khi ông là instantiating một ví dụ cụ thể thực tế của kho lưu trữ trong công việc. –