我有控制器,只要创建控制器的新实例,就会调用以下方法
initialize: function() {
var self = this;
return new View().render().then(function() {
bus.broadcast("INITIALIZED");
});
}
我想测试一下这个方法:
it("should initialise controller", (done) => {
bus.subscribe("INITIALIZED", (message, payload) => done());
new Controller();
});
如何使用Sinon.JS保证使用新的View()。render()来进行此测试?
答案 0 :(得分:2)
根据您提供的信息......:
func add(newLocation location:[String:Any]) {
let momentaryLat = (location["latitude"] as! NSString).doubleValue
let momentaryLong = (location["longitude"] as! NSString).doubleValue
let annotation = MKPointAnnotation()
annotation.title = location["title"] as? String
annotation.coordinate = CLLocationCoordinate2D(latitude: momentaryLat as CLLocationDegrees, longitude: momentaryLong as CLLocationDegrees)
mapView.addAnnotation(annotation)
}
答案 1 :(得分:0)
使用Sinon v2.3.1,您可以执行以下操作。
const sinon = require('sinon');
let sandbox;
beforeEach('create sinon sandbox', () => {
sandbox = sinon.sandbox.create();
});
afterEach('restore the sandbox', () => {
sandbox.restore();
});
it('should initialize controller', (done) => {
sandbox.stub(View.prototype, 'render').resolves();
bus.subscribe("INITIALIZED", (message, payload) => done());
new Controller();
});