我正在研究一个项目,我试图尽可能地模块化.
我正在尝试使用@Module(includes = {})注释来实现我的目标,并且它的工作效果不佳.
我有一个用于所有Java代码的gradle模块,并且每个部分都有一个模块(例如,关于页面依赖关系的AboutModule).然后,对于整个"Core"gradle模块,我有一个名为"CoreModule"的Dagger 2模块,如下所示:
@Module(includes = {
AddonModule.class,
VersionModule.class,
AboutModule.class}
)
public class CoreModule {
}
Run Code Online (Sandbox Code Playgroud)
我是否正确地认为在所有应用程序代码所在的Android gradle模块中,我应该能够将该模块包含在Component中,然后Component可以@Inject从CoreModule中列出的所有模块中获取任何内容?
目前我从这些组件中得到编译错误,表明他们注入的文件正在"询问"一个不在模块中的完全不同的类.
例如,我有一个注入GitHubActivity的GitHubComponent并尝试使用@Inject注释GithubService注入,但是编译器抛出了这个类试图注入另一个类的错误...那不是提到目标文件中的任何位置.我已经试着去试试这个错误,但是我没有看到它出错的地方.
我在这方面找不到任何文件.包含部分实际上做了什么?我使用它是否正确,因此错误在其他地方?
我正在使用 VueJS 和 Jest 对我的组件进行单元测试。
我还使用 Bootstrap Vue 库进行样式设置。我需要在 Jest 测试中使用此插件,以删除一些有关未知插件的控制台警告。
我已经创建了一个安装文件,如下所示:
import { createLocalVue } from '@vue/test-utils'
import BootstrapVue from 'bootstrap-vue'
const localVue = createLocalVue()
localVue.use(BootstrapVue)
Run Code Online (Sandbox Code Playgroud)
并将 Jest 配置为在每次测试之前使用它。
setupFiles: ['<rootDir>/tests/unit/setup']
Run Code Online (Sandbox Code Playgroud)
但是,要从控制台中删除警告,我需要localVue
在安装组件时使用该实例:
const wrapper = shallowMount(MyComponent, {
localVue,
propsData: { value: 'someVal }
})
Run Code Online (Sandbox Code Playgroud)
但是,我无法看到将localVue
创建的实例放入setup.js
测试规范文件中。
如果我这样做:
import Vue from 'vue'
import BootstrapVue from 'bootstrap-vue'
Vue.use(BootstrapVue)
Run Code Online (Sandbox Code Playgroud)
它工作正常,但这很糟糕,因为我们不应该在 Jest 测试中使用 Global Vue 实例。
有没有办法做我想做的事情,或者我是否必须在每个测试文件中构建 Bootstrap Vue 插件(以及其他插件......)?
我一直在使用Retrofit 2和一些POJO对象一段时间了.这是一个可爱的图书馆,工作得很好,但它需要一些我想要摆脱的可怕和混乱的模型.
我会告诉你......我有以下JSON来仔细阅读:
{
"things": [
{
"thing": {
"id": 823,
"created_at": "2016-02-09T22:55:07.153Z",
"published_at": "2016-02-10T19:23:42.666Z",
"downloads": 16073,
"size": 10716291
}
},
],
"count": 4,
"links": {}
}
Run Code Online (Sandbox Code Playgroud)
使用POJO Schema生成器会创建不必要的类,这使得难以维护代码.
这将创建:
Things.java
@SerializedName("things")
@Expose
public List<Things_> things = new ArrayList<>();
Things_.java
@SerializedName("thing")
@Expose
private Thing__ thing;
Things__.java
// Insert normal variables and getter/setters here
Run Code Online (Sandbox Code Playgroud)
我已经减少了一点,因为它只是为了这个想法.在我的使用中,我当然重命名了这些类,使它们更容易管理.但我认为有一种方法可以简单地跳过Thing和Thing_并允许我只返回一个实际模型数据列表(Thing__),这两个类可以删除,而"Thing__"可以简单地为"Thing".
我是正确的.Gson允许自定义反序列化,让我实现这一目标.我把一个快速的反序列化器组合在一起并使用了一个合适的TypeToken
Gson gson = new GsonBuilder()
.registerTypeAdapter(new TypeToken<ArrayList<Thing>>(){}.getType(), new AddonDeserializer())
.create();
List<Thing> model = gson.fromJson(jsonString, new TypeToken<ArrayList<Thing>>(){}.getType());
Run Code Online (Sandbox Code Playgroud)
果然,通过上面那个确切的Json给我一个可用的东西列表.
输入Retrofit 2!将registerTypeAdapter()添加到我的Retrofit 2实例(通过我的gson实例)后,我现在收到一条错误消息:
Expected BEGIN_ARRAY but was BEGIN_OBJECT …
Run Code Online (Sandbox Code Playgroud) 我即将开始使用具有主读/写和从只读设置的 RDS。
我已经阅读了 Doctrine MasterSlaveConnection 类型。
但是,我会创建一些我想使用只读副本的端点(我的大多数 GET 端点),有些需要写入数据(PUT、PATCH、DELETE 端点)。
我也在使用 API 平台。
在 Symfony 4 和 Doctrine 2 中实现这一目标的最佳方法是什么?
尝试注册 Doctrine EventSubscriber 但实际上没有任何内容被触发。
我已在相关实体上设置了注释@ORM\HasLifeCycleCallbacks
。
这是订阅者:
<?php
namespace App\Subscriber;
use App\Entity\User;
use Doctrine\Common\EventSubscriber;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Event\PreUpdateEventArgs;
use Doctrine\ORM\Events;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
class UserPasswordChangedSubscriber implements EventSubscriber
{
private $passwordEncoder;
public function __construct(UserPasswordEncoderInterface $passwordEncoder)
{
$this->passwordEncoder = $passwordEncoder;
}
public function getSubscribedEvents()
{
return [Events::prePersist, Events::preUpdate, Events::postLoad];
}
public function prePersist(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
if (!$entity instanceof User) {
return null;
}
$this->updateUserPassword($entity);
}
public function preUpdate(PreUpdateEventArgs $event)
{
$entity = $event->getEntity();
if (!$entity instanceof User) {
return …
Run Code Online (Sandbox Code Playgroud) android ×2
doctrine ×2
symfony ×2
dagger-2 ×1
doctrine-orm ×1
events ×1
gson ×1
javascript ×1
jestjs ×1
module ×1
php ×1
retrofit ×1
subscriber ×1
unit-testing ×1
vue.js ×1