小编sln*_*wak的帖子

直接在Intellij Idea/WebStorm中运行jest测试?

我正在使用jest在我的ReactJS应用程序中编写测试.到目前为止,要运行我的测试套件,我需要输入'npm test'.

这是package.npm的片段:

 "scripts": {
    "test": "./node_modules/.bin/jest",
    (other stuff)
  },
  "jest": {
    "unmockedModulePathPatterns": ["<rootDir>/node_modules/react"],
    "scriptPreprocessor": "<rootDir>/node_modules/babel-jest",
    "testFileExtensions": [
      "es6",
      "js"
    ],
    "moduleFileExtensions": [
      "js",
      "json",
      "es6"
    ]
  },
Run Code Online (Sandbox Code Playgroud)

是否可以直接在我的IDE(IDEA/WebStorm)中运行这些测试,保留配置?我不是一个js家伙,但是例如WebStrom与Karma完美搭配.jest-cli也不应该这样吗?

unit-testing intellij-idea webstorm reactjs jestjs

14
推荐指数
2
解决办法
1万
查看次数

Dagger2 - null而不是注入对象

为简单起见,假设我想将apache验证器中的EmailValidator注入我的活动中:

public class MainActivity extends FragmentActivity {

    @Inject
    EmailValidator emailValidator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
Run Code Online (Sandbox Code Playgroud)

我有一个MainModule类:

@Module
public class MainModule {

    @Provides
    public EmailValidator providesEmailValidator() {
        return EmailValidator.getInstance();
    }
}
Run Code Online (Sandbox Code Playgroud)

和MainComponent接口:

@Singleton
@Component(modules = MainModule.class)
public interface MainComponent {

    EmailValidator getEmailValidator();
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在活动中使用我的验证器时,我得到一个nullpointer异常:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.apache.commons.validator.routines.EmailValidator.isValid(java.lang.String)' on a null object reference
Run Code Online (Sandbox Code Playgroud)

显然我错过了一些东西.我知道匕首为我创建了组件实现.我应该用吗?怎么样?

如果我在onCreate方法中执行以下操作:

        emailValidator = Dagger_MainComponent.create().getEmailValidator();
Run Code Online (Sandbox Code Playgroud)

一切正常.

但我希望能够在任何地方使用@Inject注释(可能在setter/constructor而不是字段).

我错过了什么?

我用dagger1做了类似的事情并且它起作用了.当然我需要打电话给ObjecGraph.inject(this)活动.什么是dagger2等同物?

编辑:

好的,所以我找到了解决方案.如果有人会有这样的问题,有一些片段:

1)我创建了一个应用程序类:

public class EmailSenderApplication extends Application { …
Run Code Online (Sandbox Code Playgroud)

android dagger-2

12
推荐指数
1
解决办法
1万
查看次数

Java BuilderTestPattern - 如何避免样板?

我的项目中有很多值对象.

我正在使用项目lombok来消除一些样板,所以我的值对象看起来像下面这样:

@Value
@Accessors(fluent = true)
public class ValueObject {

    private final String firstProp;
    private final int secondProp;   

}
Run Code Online (Sandbox Code Playgroud)

不错,几乎没有样板.

现在,我在测试中经常使用all-args构造函数.它看起来很乱,所以我想我会介绍Builder Pattern变种:

public class ValueObjectBuilder {

    private static final int DEFAULT_VALUE_FOR_SECOND_PROP = 666;

    private String firstProp = "default value for first prop;
    private int secondProp = DEFAULT_VALUE_FOR_SECOND_PROP;

    private ValueObjectBuilder() {}

    public static ValueObjectBuilder newValueObject() {
        return new ValueObjectBuilder();
    }

    public ValueObjectBuilder withFirstProp(String firstProp) {
        this.firstProp = firstProp
        return this;
    }

    public ValueObjectBuilder withFirstProp(int secondProp) {
        this.secondProp = secondProp;
        return this; …
Run Code Online (Sandbox Code Playgroud)

java builder boilerplate bytecode-manipulation lombok

8
推荐指数
2
解决办法
1553
查看次数

react.js - 测试表单组件

在我的类似教程的应用程序中,我有一个AddForm组件:

var React = require('react');
var Input = require('react-bootstrap').Input;
var TeamActions = require('../actions/team_actions.js');

var AddForm = React.createClass({
  handleFormSubmit: function(e) {
    e.preventDefault();

    var name = this._trimmedValue(this.refs.name);
    var rating = this._trimmedValue(this.refs.rating);

    if (name && rating) {
      TeamActions.addTeam(
        {name: name, rating: rating}
      );
      this._clearField(this.refs.name);
      this._clearField(this.refs.rating);
    }
  },

  _trimmedValue: function(field) {
    return field.getInputDOMNode().value.trim();
  },

  _clearField: function(field) {
    field.getInputDOMNode().value = '';
  },

  render: function() {
    return (
        <form onSubmit={this.handleFormSubmit}>
          <Input label="Name" type="text" placeholder="Name" ref="name" />
          <Input label="Rating" type="text" placeholder="Rating" ref="rating" />
          <Input bsStyle="primary" …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs jestjs

6
推荐指数
1
解决办法
4697
查看次数

ReactJS + Flux - 如何实现toast/notifications?

我正在努力了解Flux和Reactjs.

考虑以下非常简单的场景:

你有一个输入很少的表格.当用户提交表单时,

ActionCreator.publishAnnouncement(this.state.announcement);
Run Code Online (Sandbox Code Playgroud)

在我的表单组件中调用.这是publishAnnouncement方法的样子:

var publishAnnouncement = function (announcement) {
  AnnouncementAPI.publishAnnouncement(
    announcement,
    successCallback,
    failureCallback
  )
};
Run Code Online (Sandbox Code Playgroud)

AnnouncementAPI只是一个AJAX http POST调用的包装器.这需要两次回调 - 成功和失败.

现在:我需要在屏幕上显示通知/吐司 - 表示成功或失败. 你会怎么用Flux的方式做到这一点?

我正在考虑创建Notification组件并在我的表单中呈现它.如下:

<Notification title={this.state.notification.title} message={this.state.notification.title} visible={this.state.notification.visibility}  // ?? onTimeExceeded ??     />
Run Code Online (Sandbox Code Playgroud)

但是我该如何处理这些回调呢?我应该创建监听ANNOUNCEMENT_PUBLISHING_SUCCEEDED和ANNOUNCEMENT_PUBLISHING_FAILED事件的NotificationStore吗?为了对这些事件做出反应,商店会发出CHANGE事件,从而更新我的通知.

但即使我这样做,我应该如何指示我的通知显示/隐藏?或者更糟糕的是,2秒后出现并隐藏?

我在GitHub上看到很少的组件,每个组件都使用refs等,我个人不喜欢.

总结一下: 你会如何实现这个?或许这样的项目存在?如果是这样,我在哪里可以找到它?

javascript flux reactjs reactjs-flux

6
推荐指数
1
解决办法
3339
查看次数

md-select - 如何强制要求?

如何强制md-select在多种模式下表现得像

<select multiple required ... >
Run Code Online (Sandbox Code Playgroud)

是小提琴,以显示我的意思.在此示例中,如果未从select标记中选择至少1个选项,则我的浏览器不允许我提交表单.

我希望md-select的行为类似,但我不知道我该怎么做 - 既没有'required'属性也没有添加'ng-require'指令有帮助.

html angularjs material-design angular-material

5
推荐指数
1
解决办法
7880
查看次数

CQRS和REST HATEOAS不匹配

假设你有一个模型Foo.一个业务案例是简单地创建一个Foo实例,因此我的模型中有一个相应的CreateFooCommand,通过调用给定REST端点的POST请求来触发.

当然还有其他命令.

但现在,有一个ViewModel,它来自我的DomainModel.它只是一个带有原始数据的sql表 - 来自DomainModel的每个Foo实例都有相应的派生ViewModel实例.两者都有不同的ID(在DomainModel上有一个DomainID,在ViewModel上它只是一个long值).

现在:在这种情况下我是否应该关心HATEOAS?在适当的REST实现中,我至少应该在标头中返回location-url.但由于我的视图模型仅来自DomainModel,我应该关心吗?在创建DomainModel时,我甚至没有视图模型的ID.

rest domain-driven-design hateoas cqrs

4
推荐指数
1
解决办法
1190
查看次数

自定义django管理站点 - 行按钮

假设我有这样的模型:

class Foo(models.Model):
    name = models.CharField(max_length=50)
    year = models.IntegerField(max_length=4)
    some_value = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

class Bar(models.Model)
    name = models.CharField(max_length=50)
    foo = models.ForeignKey(Foo)
Run Code Online (Sandbox Code Playgroud)

然后我使用FooAdmin类在django AdminSite中注册我的模型:

class FooAdmin(admin.ModelAdmin):
    list_display = ['name', 'year', 'some_value']
Run Code Online (Sandbox Code Playgroud)

它运行正常,但由于某种原因,我需要为我的管理站点中的每个Foo行添加两个按钮.假设我称之为'Related_button'和'Action_button'

我需要这些按钮位于每一行并且行为如下:
- 当用户点击'Related_button'时,他被重定向到django管理站点,其中列出了与特定Foo对象相关的所有Bars
- 当用户点击'Action_button'时,类Foo的对象中的字段some_value被设置为自定义值,假设为15.但在此之前,确认弹出窗口(是否确定?是/否)应该出现.

怎么做?我发现我可以做类似的事情:

def button(self, obj):
    return '''<input type="button" value="button" />'''
button.short_description = 'Action'
button.allow_tags = True
list_display = ['name', 'year', 'some_value', 'action']
Run Code Online (Sandbox Code Playgroud)

在我的FooAdmin中导致按钮出现在每一行中.但是如何为该按钮设置操作?

python django

1
推荐指数
1
解决办法
2762
查看次数