我有一个类,其中添加了依赖项作为构造函数注入,以及一个作为字段注入。
@service
public class MyService {
private final ClientOne clientOne;
private final ClientTwo clientTwo;
@Autowired
private SpecialClient specialClient;
public MyService(ClientOne clientOne,
ClientTwo clientTwo){
我有一个类,而不是一个带有注入字段的活动:
public Class1 extends Class2 {
@Inject A a;
}
public Class2 extends Class3 {
@Inject B b;
}
public Class3 {
@Inject C c;
}
我提供了这样的Class1:
@Provides
Class1 provideClass1(){
return new Class1();
}
我的问题是:当提供Class1时,Dagger会在超类级别注入B和C吗?或者我应该使用构造函数注入,并在构造函数中调用super?
我使用MassTransit在两个微服务之间交换消息,并且有一个使用者在收到命令消息时发布一个事件。
在添加一个单元测试以覆盖此消息交换时,我注意到当没有发布任何事件时,测试大约需要30次才能完成,我认为这是一个默认的超时。下面是再现问题的xUnit单元测试。
using System;
using Xunit;
using MassTransit;
using MassTransit.Testing;
using System.Linq;
using SomeProject.MassTransitInterface;
namespace SomeProject.MassTransitInt
我有一个asp.net流程,它也使用来自服务总线(MassTransit)的消息。对于For请求,我的数据库会话将以PerWebRequest的方式进行解析。
但是,当进程使用来自MassTransit的消息时,我需要数据库会话有另一种生活方式,因为没有可用的HttpContext。
我做了这样的事情:
public class PerRequestLifeStyleManager : ILifestyleManager
{
readonly PerWebRequestLifestyleManager perWebRequestLifestyleManager;
rea
我是个编程新手。
我有一节课,A
public class A
{
public InterfaceB _b;
public A()
{
_b = new B();
}
public string functionA()
{
if(String.IsNullOrEmpty(_b.GetId()))
return String.Empty;
else if(String.IsNullOrEmpty(_b.GetKey()))
在MVC / Entity项目上,我正在远离Repository模式。
首先,它给了我一些问题.我认为DBContext和IDBset实现了UnitOfWork和Repository。
因此,我开始使用命令和查询。下面是一个示例:
public class ListPostsQuery {
public ListPostsQuery() {
}
public List<Post> Execute(int currentPage, int pageSize) {
}
}
如何在查询/命令中集成或注入DBContext?
也许使用一个带有保存方法的DBContex
我正在尝试更多地理解TDD,我所见过的关于DI的所有例子都是只有方法的类/接口。
public interface IUserRepository
{
User GetByID(int ID);
}
public class UserRepo : IUserRepository
{
private IUserRepository Repo;
public UserRepo(IUserRepository repo)
{
this.Repo. = repo;
}
public User GetByID(int ID) {}
}
.....
为什么对于这种测试来说,@InjectMocks可能是要避免的事情。
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
@Mock
private Bar bar;
@InjectMocks
private Foo foo; // created by Mockito
@Test
public void shouldCallMethod() {
// when
foo.myMethod();
// then
我有一个服务,我希望在不使用“真实”存储库的情况下进行测试,但是使用模拟存储库。主程序
ServiceManager service = new ServiceManager();
Customer c = new Customer();
//set customer properties
service.Save(c);
服务
public class ServiceManager
{
public bool Save(Customer customer)
{
Repository rep = new Repository();
bool re
Android Studio 2.2.2
我有一个NewsListModelImp类,它是MVP中的模型。
我想把我的改装服务注入到模型中。但是,由于NewsListModelImp不包含对上下文或活动的任何引用,所以我不能调用getApplication()。如果你在一个活动或片段中,你会做什么。我不想在NewsListModeImp的构造函数中传递任何上下文或活动,因为这必须来自演示者,我希望避免任何安卓的东西。
public class NewsListModelImp implements NewsListModelContract {
@Inject
NYTimesS
我有一个在HTTP端点接受请求的简单服务。端点的操作使用MassTransit发布事件,提醒使用者某个实体已更新。然后,已发布事件的使用者向同步使用者发送同步请求,以完成工作单元。
但是,当事件使用者试图分派请求时,MassTransit会抛出一个异常,声明为A convention for the message type {type} was not found。这似乎意味着我的消费者没有注册,但我相信它是注册的。
这是我的Startup注册码:
public void ConfigureServices(IServiceCollection services)
{
// -- r
我使用依赖项注入来模拟类,以便对依赖它们的其他类进行单元测试:
class Foo : IFoo
{
// production code
}
class MockFoo : IFoo
{
// mock so other classes that depend on Foo can be unit tested
}
class Bar
{
public DoSomething()
{
var barValue = 20;
// use dependency injection to get Foo instance.
哪种方式是注入依赖项的最佳方式?为什么?两者之间的区别是什么?
public abstract class Service {
private IConfig config;
@Inject
public Service(IConfog config) {
this.config = config
}
}
或
public abstract class Service {
@Inject private IConfig config;
@Inject
public Service() {
}
}
每当我尝试对presenter和模拟视图进行实际的单元测试时,我最终会遇到太多的数据库依赖项
public EditAccount(IAccountEditPage _view, ISession _session, IResponse _response)
{
}
public void view_SaveUser()
{
//Class that takes the view's data and persists it to DB
}
显然,我不能为这个presenter编写单元测试,因为我有一个具体的使用我的模型类,它具有很强的数据库依赖性。
在我的p
Bean定义中的哪一个是最佳实践?为什么?
例如,Type 1可以用于单元测试,而无需创建上下文。
1型
public class MovieRecommender {
private final CustomerPreferenceDao customerPreferenceDao;
@Autowired
public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
this.customerPreferenceDao = customerPreferenceDao;
我在这里找不到任何合理的答案,所以我希望它不是复制品。那么,为什么我应该更喜欢setter或构造函数注入而不是简单的
@Inject
MyBean bean;
如果您需要在类初始化期间对注入的bean执行某些操作,我了解构造函数注入的用法,例如
public void MyBean(@Inject OtherBean bean) {
doSomeInit(bean);
//I don't need to use @PostConstruct now
}
但是,它几乎和@PostConstruct方法是一样的,我根本没有得到setter注入,难道它不是Spring和其他D
对于MassTransit,当设置新的服务总线时,必须声明端点/类型;但是,我试图删除该依赖项,以便在对使用者进行测试时,我可以利用环回端点,但在生产过程中,它将使用实际的msmq端点。
下面是一个新服务总线的示例设置:
public class ConsumerService
{
IServiceBus _bus;
public void Start()
{
// Initalize Service Bus
_bus = ServiceBusFactory.New(x =>
{
//x.U
我有这样一门课:
public class Spring implements ApplicationContextAware{
private static ApplicationContext CONTEXT;
public static <T> T getBean(Class<T> clz){
return CONTEXT.getBean(clz);
}
public static Object getBean(String s){
return CONTEXT.getBean(s);