我正在开发一个Redux应用程序并试图在ES6默认导出函数上使用Jasmine创建一个间谍.我已经尝试了几种不同的方法来监视函数,包括使用通配符导入来访问导入的'default'属性,但到目前为止我没有尝试过.下面是一个示例,我想测试widgets.js和监视小部件功能.有没有办法实现这一点,而无需改变im导出函数的方式widget.js?
widget.js
import { Map } from 'immutable';
import { CREATE_WIDGET } from 'actions';
const initialState = Map({
id: undefined,
name: undefined
});
export default function widget(state=initialState, action) {
switch (action.type) {
case CREATE_WIDGET:
return state.update((widget) => widget.merge(action.widget));
default:
return state;
}
}
Run Code Online (Sandbox Code Playgroud)
widgets.js
import { OrderedMap } from 'immutable';
import { CREATE_ROOM } from 'actions';
import widget from './widget';
const initialState = OrderedMap();
export default function widgets(state=initialState, action={}) {
switch (action.type) {
case CREATE_ROOM:
return …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建/原型化具有搜索过滤器的小部件和具有键值/父子关系的2个面板.右侧面板包含类别,左侧面板具有与单个类别相关联的兴趣.可以选择类别行以显示关联的兴趣复选框.我还没有尝试理解如何使用复选框更新表单提交,首先我需要了解有关正确的数据流方式的更多信息.
这是我第一次涉足React,我知道React鼓励单向数据流.我觉得我通过使用jQuery处理事件错误地更新了兴趣面板.我想知道更新兴趣小组的一些替代方法.
根据我的阅读,为了更新父级(我相信它在React docs中称为所有者)组件,您需要在子/ ownee组件上定义回调.我很感激对此的解释以及我是否错误地使用了州与道具的兴趣.我试图只让搜索过滤器和复选框成为窗口小部件状态的一部分,因为我读到可过滤数据应该属于道具.
更新:我改变了在getDefaultProps中初始化的兴趣,所以现在我将它们用作道具.我认为这更像是React方式,我是否正确?我还通过更改handleCategoryRowClick函数来更改兴趣更新的方式.我认为我现在做的事情更多React,但是仍然会喜欢任何有使用React经验的人给出的建议,谢谢.
任何帮助将不胜感激!
/** @jsx React.DOM */
var InterestRow = React.createClass({
render: function() {
return (
<div>
<label>{this.props.interest.name}</label>
<input type="checkbox" ref={this.props.key} value={this.props.key} />
</div>
)
}
});
var InterestPanel = React.createClass({
var interestPanel = this;
var rows = [];
render: function() {
var rows = [];
var i = 0;
_(this.props.interests).each(function (interest) {
rows.push(<InterestRow interest={interest} key={interest.value} />);
});
return (
<form>{rows}</form>
)
}
});
var CategoryRow = React.createClass({
render: function() {
return (
<li onClick={this.props.handleClick.bind(null, this.props.interests)}>{this.props.category}</li> …Run Code Online (Sandbox Code Playgroud) 我是一名Ruby/Rails开发人员,现在在Python/Django商店工作.我已经开始热衷于Python了,但是,我仍然在努力寻找与Rails在某些方面相当的Django.我当前和未来的许多工作都将专注于向我们的API发出AJAX请求.作为Rails开发人员,我使用了不引人注目的javascript,特别是在表单提交时添加了一个数据远程标记,如下所示.
然后我在控制器中编写一个方法来处理请求,并且会在位于/ assets/js目录中的JS文件中使用事件委托编写一个JavaScript/jQuery函数来处理客户端的响应.我假设过来Django会有类似的方式来实现这种功能.
我想我真的想说的是我假设Django会为Rails提供类似的"魔力",因为每次我想要发出一个AJAX请求时都不必编写jQuery AJAX函数.我写了一个粗略的比较(非常粗略),我将如何写出这两个.我想知道这对于我在Django中的Rails中做什么是不正确的.我知道StackOverflow并不适用于意见,但我认为无论你使用什么语言/框架,即不通过反复写出AJAX函数来干扰代码,违反原则的原则并不违背意见,它更像是打破了一个公认的规则.
我目前在Django中处理AJAX请求的方法感觉不对,或者我可能只是习惯了通过data-remote ="true"属性提供的"魔术"Rails.非常喜欢这个主题的一些指导,以帮助我确定一个可靠的方法,谢谢.
钢轨
视图/ some_controller/form.html.erb
<form action="<%= endpoint %>" method="post" data-remote="true" id="form">
FORM FIELDS HERE
</form>
Run Code Online (Sandbox Code Playgroud)
资产/ Java脚本/ some_model.js
$('body').on('ajax:success', '#form', function(event, data) {
DO SOME STUFF HERE
});
Run Code Online (Sandbox Code Playgroud)
控制器/ some_controller.rb
def some_ajax_action
if request.xhr?
THIS IS AN AJAX REQUEST RENDER A VIEW PARTIAL &
MANIPULATE THE DOM WITH JS OR RESPOND WITH JSON
else
THIS ISNT AN AJAX REQUEST
end
end
Run Code Online (Sandbox Code Playgroud)
DJANGO
some_app /模板/ form.html
<form action="{% url 'app:view' %}" method="post" id="form">
FORM FIELDS …Run Code Online (Sandbox Code Playgroud) 有没有更好的方法在Ruby中编写以下正则表达式?第一个正则表达式匹配以(小写)辅音开头的字符串,第二个带有元音.
我试图弄清楚是否有一种方法可以编写与第二个表达式的负数相匹配的正则表达式,而不是使用多个范围编写第一个表达式.
string =~ /\A[b-df-hj-np-tv-z]/
string =~ /\A[aeiou]/
Run Code Online (Sandbox Code Playgroud) 我想将整个查询语句记录到Neo4j服务器,但是,在搜索了SO和文档之后我没有成功.我发现这个问题,在Neo4j服务器上记录的休息查询,但更改这些配置设置并没有实现我所希望的.我在Golang工作并使用Go-CQ库与Neo4j版本2.1.5中的REST API进行通信.
我正在寻找的是正在执行的实际查询,理想情况下也是传递参数.是否可以记录此信息?非常感谢任何帮助,谢谢!
套接字在哪里适合Flux单向数据流?我已经阅读了两种思路,即远程数据应该进入Flux单向数据流.我看到获取Flux应用程序的远程数据的方式是在进行服务器端调用时,例如,在承诺中解析或拒绝.在此过程中可能会触发三种可能的操作:
(FooActions.BAR)(FooActions.BAR_SUCCESS)(FooActions.BAR_ERROR)商店将监听操作并更新必要的数据.我已经看到了来自动作创建者和商店内部的服务器端调用.我使用动作创建器进行上述过程,但我不确定是否应该通过Web套接字获取数据.我想知道插座适合下图.

我正在尝试为CodeEval上的挑战练习编写测试.每个挑战我正在创建一个文件夹,在项目文件夹中创建'lib'和'spec'文件夹.从我运行的命令行:
rspec --init
Run Code Online (Sandbox Code Playgroud)
它告诉我'spec/spec_helper.rb'和'.rspec'已创建.我将源文件放在'lib'文件夹和'spec/lib'文件夹中的spec文件中并相应地命名它们.这是一个规范的例子:
require 'spec_helper'
require 'file_name'
describe '#swap_elements' do
it 'should swap 1 pair of numbers' do
swap_elements('1 2 3 4 5 6 7 8 9',0,8).should == '9 2 3 4 5 6 7 8 1'
end
end
Run Code Online (Sandbox Code Playgroud)
从我运行的项目的根目录:
rspec /spec/lib/file_name_spec.rb
Run Code Online (Sandbox Code Playgroud)
结果如下:
/Users/username/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `load': cannot load such file -- /spec/lib/swap_elements_spec.rb (LoadError)
from /Users/username/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `block in load_spec_files'
from /Users/username/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `each'
from /Users/username/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `load_spec_files'
from /Users/username/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.13.1/lib/rspec/core/command_line.rb:22:in `run'
from /Users/username/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.13.1/lib/rspec/core/runner.rb:80:in `run'
from /Users/username/.rvm/gems/ruby-2.0.0-p195/gems/rspec-core-2.13.1/lib/rspec/core/runner.rb:17:in `block in autorun'
Run Code Online (Sandbox Code Playgroud)
这是最近的一个问题,我还没有安装任何更新的rspec宝石.知道为什么会这样吗?
我试图在我的应用程序中设置几个级别的路由和嵌套视图,以便根据路由替换部分应用程序.我能够加载登录页面,似乎布局视图也加载了,但是,我似乎无法让嵌套<ui-view />标签工作.有人可以告诉我我是怎么做错的,或者如果在Angular中有一种更惯用的方式来完成相同的功能.
app.js
(function() {
'use strict';
angular
.module('webApp', [
'ui.router',
])
.config(config)
.run(run);
config.$inject = ['$stateProvider', '$urlRouterProvider'];
function config($stateProvider, $urlRouterProvider, ngClipProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('app', {
abstract: true,
url: '/',
template: '<ui-view/>'
})
.state('app.login', {
templateUrl: 'views/login.html',
controller: 'LoginCtrl as login',
url: ''
})
.state('app.main', {
url: 'room',
templateUrl: 'views/layout.html'
})
.state('app.main.foo', {
url: '',
views: {
'header@app.main': {
templateUrl: 'partials/header.html',
controller: 'HeaderCtrl as header'
},
'sidebar@app.main': {
templateUrl: 'partials/sidebar.html',
controller: 'SidebarCtrl as sidebar'
},
'main@app.main': { …Run Code Online (Sandbox Code Playgroud) 嘿,我似乎无法在第一次测试失败后停止运行我的所有测试.我在StackOverflow上的其他地方已经看到过这个问题,这里有人说他们做了同样的事情,类似案例仍然有问题.希望有人可以为我清除这一点.我的Guardfile如下:
require 'active_support/inflector'
guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' }, :rspec_env => { 'RAILS_ENV' => 'test' } do
watch('config/application.rb')
watch('config/environment.rb')
watch('config/environments/test.rb')
watch(%r{^config/initializers/.+\.rb$})
watch('Gemfile')
watch('Gemfile.lock')
watch('spec/spec_helper.rb') { :rspec }
watch('test/test_helper.rb') { :test_unit }
watch(%r{features/support/}) { :cucumber }
end
guard 'rspec', all_on_start: false, after_all_pass: false, cli: '--fail-fast --drb' do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
#Custom Rails Tutorial specs
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) do |m|
["spec/routing/#{m[1]}_routing_spec.rb",
"spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb",
"spec/acceptance/#{m[1]}_spec.rb",
(m[1][/_pages/] ? "spec/requests/#{m[1]}_spec.rb" :
"spec/requests/#{m[1].singularize}_pages_spec.rb")]
end
watch(%r{^app/views/(.+)/}) do |m| …Run Code Online (Sandbox Code Playgroud) 我正在使用ImmutableJS OrderedMap在React应用程序中存储ImmutableJS Records.我想知道处理共享相同值的更新的惯用方法是什么,而不会丢失对Record的引用.例如,给定以下代码,如果要fooBars在键1处更新的记录与键1处的当前记录保持相同的确切值,那么在键1处更新对象的正确方法是什么.
import Immutable from 'immutable';
let fooBars = Immutable.OrderedMap();
let FooBar = Immutable.Record({id: undefined});
let fooBar1 = new FooBar({id: 1});
let fooBar2 = new FooBar({id: 1});
fooBars = fooBars.set(fooBar1.id, fooBar1);
// this will lose reference to fooBar1 despite the values not changing
// and cause the DOM to reconcile forcing a re-render of the component
fooBars = fooBars.update(fooBar2.id, fooBar2);
Run Code Online (Sandbox Code Playgroud) javascript ×5
reactjs ×3
rspec ×2
ruby ×2
ajax ×1
angularjs ×1
django ×1
ecmascript-6 ×1
flux ×1
guard ×1
immutable.js ×1
jasmine ×1
neo4j ×1
python ×1
reactjs-flux ×1
redux ×1
regex ×1
socket.io ×1
spork ×1
websocket ×1