当导出作为aurelia中的视图模型的es6类时,我似乎能够在构造函数和激活函数中设置初始化代码.
这里有标准的约定吗?
我应该在一个而不是另一个中进行某些初始化吗?
用户没有实现es6类的激活功能吗?
我有一个在节点和浏览器上运行的函数,我想用jest测试:
const myFn = () => {
if(typeof window !== 'object'){
return 1;
}
return 2;
}
Run Code Online (Sandbox Code Playgroud)
我如何能够将全局窗口对象设置为undefined,以测试节点分支,并返回1.
例如
test('myTest', ()=> {
global.window = undefined;
expect(myFn()).toEqual(1); // result: 2
});
Run Code Online (Sandbox Code Playgroud)
我试过这里的建议没有成功: 在Jest中模拟全局变量
我有一个mongoose架构,我正在调用Model.create().
当我在'then'之后链接'catch'时我得到undefined不是一个函数,如果我只是将错误函数作为'then'的第二个参数调用,那么我没有.
但是当我调用Model.find之类的方法时,我可以使用'catch'.
为什么我不能在调用Model.create时链接'catch'
var mySchema = Mongoose.Schema({
name: String,
});
Run Code Online (Sandbox Code Playgroud)
作品:
KarmaModel.create({
"name": "ss,
})
.then(function() {
//do somthing
},function()=>{
//do somthing
});
Run Code Online (Sandbox Code Playgroud)
不起作用:
KarmaModel.create({
"name": "ss,
})
.then(function() {
//do somthing
}).catch(function()=>{
//do somthing
});
Run Code Online (Sandbox Code Playgroud) 我需要使用execute命令将select语句中的数据插入临时表.
if OBJECT_ID('tempdb..#x') is not null
drop table #x
Create Table #x(aaa nvarchar(max))
declare @query2 nvarchar(max)
set @query2 = 'SELECT [aaa] from IMP_TEMP'
INSERT #x
SELECT [aaa] from IMP_TEMP -- THIS WORKS
SELECT *from #x
INSERT #x
exec @query2 -- THIS DOES NOT WORKS, WHY?
SELECT *from #x
Run Code Online (Sandbox Code Playgroud) 我正在修改这里找到的一个例子:
https://github.com/airbnb/enzyme/blob/master/docs/api/ReactWrapper/setProps.md
class Foo extends React.Component {
render() {
return (
<input className={this.props.name} type="text" value={this.props.name} onChange={()=>{}} />
);
}
}
it('should pass and does not', ()=> {
const wrapper = mount(<Foo name="foo" />);
expect(wrapper.find('.foo').html()).toBe(`<input class="foo" type="text" value="foo">`);
wrapper.setProps({ name: 'bar' });
expect(wrapper.find('.bar').html()).toBe(`<input class="bar" type="text" value="bar">`);
});
Result: Expected '<input class="bar" type="text" value="foo">' to be '<input class="bar" type="text" value="bar">'.
Run Code Online (Sandbox Code Playgroud)
您可以从测试结果中看到className属性在prop更改时已正确更新.但输入的值仍然错误地设置为'foo'.
关于如何断言该值的任何想法已经在接收新道具的组件上正确地更改为输入的值属性?
尝试使用Firebase连接David Easts TODO Angular2演示时遇到错误。
超出最大呼叫堆栈大小
仓库可以在这里找到:https : //github.com/davideast/ng2do
我所做的不同之处是:导入绑定,AngularFire和FirebaseArray:
import {bind} from 'angular2/di';
import {AngularFire, FirebaseArray} from 'firebase/AngularFire';
Run Code Online (Sandbox Code Playgroud)
并注册componentServices:
@Component({
selector: 'todo-app',
componentServices: [
AngularFire,
bind(Firebase).toValue(new Firebase('https://webapi.firebaseio-demo.com/test'))
]
})
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
最大调用堆栈大小超出错误。
我有以下节点应用程序包含异步函数,等待ES6承诺.
async function test(id){
try {
let val = await Promise.resolve(id);
console.log("val: " + val);
} catch (error) {
console.log("error: " + error);
}
}
test(1);
Run Code Online (Sandbox Code Playgroud)
结果= val:未定义
预期结果:val:1
我使用gulp-babel将其编译为ES5.
我在gulp任务中有以下设置:
.pipe(babel({ optional: ["es7.asyncFunctions"] }))
Run Code Online (Sandbox Code Playgroud)
在安装babel之后我也要求'babel/polyfill'.
透明代码:
function test(id) {
var val;
return regeneratorRuntime.async(function test$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.prev = 0;
context$1$0.next = 3;
return Promise.resolve(id);
case 3:
val = context$1$0.sent;
console.log('val: ' + val);
context$1$0.next = 10;
break;
case 7:
context$1$0.prev = …Run Code Online (Sandbox Code Playgroud) 我有一个抛出对象的函数,如何断言正确的对象是在开玩笑呢?
it('should throw', () => {
const errorObj = {
myError: {
name: 'myError',
desc: 'myDescription'
}
};
const fn = () => {
throw errorObj;
}
expect(() => fn()).toThrowError(errorObj);
});
Run Code Online (Sandbox Code Playgroud)
javascript ×5
reactjs ×3
jestjs ×2
node.js ×2
angular ×1
angularfire ×1
async-await ×1
aurelia ×1
babeljs ×1
constructor ×1
enzyme ×1
es6-promise ×1
execute ×1
firebase ×1
insert ×1
jasmine ×1
mongodb ×1
mongoose ×1
promise ×1
sql ×1
sql-server ×1
temporary ×1
typescript ×1