- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在测试不断变化的 Store 时遇到问题,想要停止调度程序。我已经看到它是如何用 jest 完成的, 但我想用 sinon 达到同样的效果。
这是我的
来源
库/调度程序。完整代码 here
var invariant = require('./invariant');
//...
function Dispatcher() {
this.$Dispatcher_callbacks = {};
}
Dispatcher.prototype.register=function(callback) {
var id = _prefix + _lastID++;
this.$Dispatcher_callbacks[id] = callback;
return id;
};
// ...
module.exports = Dispatcher;
调度员:
module.exports.Dispatcher = require('./lib/Dispatcher')
AppDispatcher:
var Dispatcher = require('flux').Dispatcher;
var copyProperties = require('react/lib/copyProperties');
var AppDispatcher = copyProperties(new Dispatcher(), {
handleViewAction: function(action) {
this.dispatch({
source: 'VIEW_ACTION',
action: action
});
}
});
module.exports = AppDispatcher;
ItemStore,我想测试的
var AppDispatcher = require('../dispatcher/AppDispatcher');
var EventEmitter = require('events').EventEmitter;
var ItemConstants = require('../constants/ItemConstants');
var merge = require('react/lib/merge');
var CHANGE_EVENT = 'change';
var _items = [];
var ItemStore = merge(EventEmitter.prototype, {
getSoekeresultat: function() {
return _items;
},
emitChange: function() {
this.emit(CHANGE_EVENT);
}
});
AppDispatcher.register(function(payload) {
var action = payload.action;
switch(action.actionType) {
case ItemConstants.ITEMS_FETCHED:
_items = action.payload;
ItemStore.emitChange();
break;
default:
}
return true; // No errors. Needed by promise in Dispatcher.
});
module.exports = ItemStore;
所以我要 stub 的是AppDispatcher.register。我该怎么做?
我试过几种方法,最后一次尝试是这样的:
var sinon = require("sinon");
require("jasmine-sinon");
describe("ItemStore", function(){
var AppDispatcher = require('js/dispatcher/AppDispatcher.js');
sinon.stub(AppDispatcher, 'register', function () {
console.log("stub");
});
it("should use stub when called directly", function(){
AppDispatcher.register(function (payload) {
});
//outputs "stub"
});
it("should use stub when requiring itemstore", function(){
var ItemStore = require('js/stores/ItemStore.js');
// doesn't output "stub"
});
});
有人可以告诉我如何 stub 吗?
最佳答案
虽然它没有严格回答您的问题,但您可以使用 proxyquire 实现您想要的效果.它允许您在 ItemStore
中对 require
d 的 AppDispatcher
进行 stub 。例如
var proxyquire = require('proxyquire');
var AppDispatcher = require('js/dispatcher/AppDispatcher.js');
var StubbedAppDispatcher = sinon.stub(AppDispatcher)
/*
* This will load the `ItemStore` module, satisfying it's `AppDispatcher`
* dependency (the `require('../dispatcher/AppDispatcher')` statement)
* with our stubbed version.
*/
var ItemStore = proxyquire('js/stores/ItemStore.js', {
'../dispatcher/AppDispatcher': StubbedAppDispatcher
});
关于javascript - 如何使用 sinon stub /模拟从 "superclass"复制的依赖项方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26925277/
尝试构建我的 Polymer 2.0 项目,但每次我尝试时,无论预设(es5-bundled、es6-bundled)还是单独的标志,我都会收到以下针对我拥有的一个 mixin 的警告: EdmMac
早上好,这是从 oracle 教程中摘录的,假设我们有 class Shape { /* ... */ } class Circle extends Shape { /* ... */ } class
这可能根本不是悖论,但从新手的角度来看,确实如此。 > Class.superclass => Module > Class.superclass.class => Class > Class.sup
我一直在实例化javascript中的子类,使用 object = new class () 但我注意到有人实例化使用 object.prototype = new class () 问题:有什么区别
编辑:用一个简单的用例创建了一个 repo 来复制问题,并在 API 平台问题队列中创建了一个问题 https://github.com/api-platform/api-platform/issue
我正在试验 Java 泛型。我了解使用 Java 泛型我们可以创建仅处理特定类型的类和方法。这使得能够在编译时检测编程错误。 我的问题听起来很奇怪。为什么使用 E extends Superclass
我有一个项目,涉及创建不同类型的对象,这些对象从父类(super class)继承方法和变量,但是当我尝试更改子类中的变量(更改为通过构造函数输入的值)时,变量保持相同的值它在父类(super cla
当我在线部署一个包含映射父类(super class)实体的 symfony 网站时,我收到以下错误: AnnotationException: [Semantical Error] The anno
我有ForceGaugeViewController类和ForceGaugeController类。我试图使 ForceGaugeController 类成为 ForceGaugeViewContro
我想创建一个 Num 的父类(super class),称为 Linear class Linear a where add :: a -> a -> a instance (Num a) =>
我正在尝试从类中删除父类(super class)。 ODB手册说“NULL将删除它”。但它给了我这个错误: "java.lang.IllegalArgumentException: Supercla
我有一个实体数组列表。实体类有 public void update(int delta, Level level, ArrayList entities){ //do stuff } 实体
问题 大多数情况下,当我重新导入项目到eclipse的时候,我重写的方法都不能被正确格式化,导致这样的错误:> The method must override a superclass method
我正在制作一个解决许多类似问题的程序。 我从一个看起来像(例如)的类开始: class problem { void init(); void solve(); int print_res
我的一些构造函数有问题。两个子类都需要得到相同的类(没有父类(super class)),这就是为什么这些类应该在父类(super class)中初始化: template class Super
我正在使用增强的 for 循环,它看起来像这样: public void addItems (Iterable items) { for (Item item : items) {
我是第一次开发 MATLAB OOP 项目。我的父类将有一个非常大的矩阵, child (很多)需要访问它。如何防止 child 复制数据? 在伪代码中我要求, classdef parent
我正在使用 CommonsWare 的 Android CWAC-Camera 库并尝试将我自己的 UI 用于相机 fragment 。如果这是一个愚蠢的问题,请原谅我。我特别关注这部分的 READM
我正在使用具有以下简单本体的 Protege 4.3(也尝试过 5-beta): Class: Person Class: Man SubClassOf: Person Ind
我正在玩 Scala By Example 开头的 QuickSort 示例并尝试将其调整为通用类型 A ,而不仅仅是 Int s。 到目前为止我的工作是 def sort[A new Y(i, -
我是一名优秀的程序员,十分优秀!