我正在使用数据库清理器与续集和sqlite外键约束遇到问题.具体来说,我正在使用:truncationCapybara集成测试的策略.
对于给定的示例模式:
CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE events(id INTEGER PRIMARY KEY, title TEXT);
CREATE TABLE events_users(
user_id INTEGER,
event_id INTEGER,
FOREIGN KEY(user_id) REFERENCES users(id),
FOREIGN KEY(event_id) REFERENCES events(id)
);
Run Code Online (Sandbox Code Playgroud)
和续集模特:
class User < Sequel::Model
many_to_many :events
end
class Event < Sequel::Model
many_to_many :users
end
Run Code Online (Sandbox Code Playgroud)
运行以下内容:
# normally this would be run in
# an rspec before(:each) for my :feature specs
DatabaseCleaner.start
DatabaseCleaner.strategy = :truncation
bob = User.create(name: "bob")
sally …Run Code Online (Sandbox Code Playgroud) 我正在启动 Prolog,由七周七种语言提供,并在理解 Prolog 如何处理递归方面遇到了一些困难。
给出以下代码:
sum(0, []).
sum(Total, [Head|Tail]) :- sum(Sum,Tail), Total is Head + Sum.
% executed in the Prolog interpreter:
sum(X, [1,2,3])
X = 6
Run Code Online (Sandbox Code Playgroud)
我明白这段代码在做什么,但我对 Prolog 如何解析sum. 主要是,令我感到奇怪的是 . 中没有明确的“返回” sum。
我的理解是,会发生这样的事情:
A. 解释器尝试通过调用 sum 来统一规则 sum(X, [1,2,3]):
0 Sum(X, [1, 2, 3])
1 Sum(Y, [2,3]
2 Sum(Z, [3])
3 Sum(0, []) % our recursive base
Run Code Online (Sandbox Code Playgroud)
B. 一旦我们找到基本事实,它就会爬回递归“堆栈”:
3 Sum(0, []), Total = 0 % we start at our base fact
2 Sum(1, …Run Code Online (Sandbox Code Playgroud) 我有这段代码
User.find({}, function(err, users) {
for (var i = 0; i < users.length; i++) {
pseudocode
Friend.find({
'user': curUser._id
}, function(err, friends) * * ANOTHER CALLBACK * * {
for (var i = 0; i < friends.length; i++) {
pseudocode
}
console.log("HERE I'm CHECKING " + curUser);
if (curUser.websiteaccount != "None") {
request.post({
url: 'blah',
formData: blah
}, function(err, httpResponse, body) { * * ANOTHER CALLBACK * *
pseudocode
sendMail(friendResults, curUser);
});
} else {
pseudocode
sendMail(friendResults, curUser);
}
}); …Run Code Online (Sandbox Code Playgroud) 我正在使用superagent来支持反应应用程序中的一些XHR服务.我在superagent上写了一个非常薄的包装器,使配置更容易.试图测试这个薄层已经证明是非常令人头痛的问题.
我知道jest和节点核心依赖性存在问题,我可以dontMock通过superagent的依赖关系来完成工作.但我更喜欢让jest只是模拟superagent而不会在默认情况下爆炸.
结果是unMockedModulePatterns我的package.json中有一个非常详细的测试介绍或输入,有更好的方法吗?
// my-module.js
'use strict';
var request = require('superagent');
module.exports = function () {
return request.get('http://stackoverflow.com/questions/tagged/jestjs');
};
Run Code Online (Sandbox Code Playgroud)
一个示例测试:
// __tests__/my-module-test.js
'use strict';
jest.dontMock('../');
// T_T
jest.dontMock('superagent');
jest.dontMock('debug');
jest.dontMock('tty');
jest.dontMock('util');
jest.dontMock('stream');
jest.dontMock('fs');
jest.dontMock('delayed-stream');
jest.dontMock('mime');
jest.dontMock('path');
describe('mymodule', function () {
var myModule, request;
beforeEach(function () {
myModule = require('../');
request = require('superagent');
request.get = jest.genMockFunction(function () {
return {
get: jest.genMockFunction()
}
})
});
it('makes an xhr request using superagent', …Run Code Online (Sandbox Code Playgroud) 我想在指令的属性之间进行单向(非一次)绑定,但我正在努力解决如何在没有指令的情况下表达这一点attrs.$observe.我现在能想出的最好的方法是绑定&attr并调用我在模板中绑定的变量,例如{{attr()}}
app.controller('MainCtrl', function($scope) {
$scope.names = ['Original'];
setTimeout(function () {
$scope.names.push('Asynchronously updated name');
$scope.$apply();
}, 1000);
});
app.directive('helloComponent', function () {
return {
scope: {
'names': '&names'
},
template: '<li ng-repeat="name in names()">Hello {{name}}</li>'
}
});
Run Code Online (Sandbox Code Playgroud)
<body ng-controller="MainCtrl">
<ul>
<hello-component names="names"/>
</ul>
</body>
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来保留单向绑定而不需要调用绑定属性?
我已经更新了示例代码,以阐明我想绑定到一个对象,而不仅仅是一个字符串.所以@attr(使用字符串属性)不是解决方案.
当我运行时,lein repl我得到了一个精彩的交互式 REPL,并显示以下提示
user=>
Run Code Online (Sandbox Code Playgroud)
我碰巧在应用程序上使用 lein repl (作为控制台),我希望有类似的东西:
user(<environment>)=>
;; e.g. when run in production:
user(PRODUCTION)=>
Run Code Online (Sandbox Code Playgroud)
当它用于访问环境中的 repl/控制台时。
我正在尝试将长度不均匀的字符串的向量分块为长度相等的字符串的向量。我想到的最懒惰的方法是将参数连接到字符串中,将chars转换为向量,然后使用Vec::chunks。不幸的是,我遇到了尝试将大块收集成字符串的问题。
let args: Vec<String> = ["123", "4", "56"].iter().map(|&s| s.into()).collect();
let result: Vec<String> = args
.join(" ")
.chars()
.collect::<Vec<_>>()
.chunks(2)
.map(|c| c.collect::<String>())
.collect::<Vec<String>>();
assert_eq!(["12", "34", "56"], result);
Run Code Online (Sandbox Code Playgroud)
结果错误:
let args: Vec<String> = ["123", "4", "56"].iter().map(|&s| s.into()).collect();
let result: Vec<String> = args
.join(" ")
.chars()
.collect::<Vec<_>>()
.chunks(2)
.map(|c| c.collect::<String>())
.collect::<Vec<String>>();
assert_eq!(["12", "34", "56"], result);
Run Code Online (Sandbox Code Playgroud)