首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jasmin:类的模拟实例

jasmin:类的模拟实例
EN

Stack Overflow用户
提问于 2014-03-26 07:55:55
回答 2查看 20K关注 0票数 7

是否可以创建对象obj的模拟,以便Jasmine测试类似

代码语言:javascript
复制
expect(fakeB instanceof B).toBe(true);

通行证?

换句话说,我有一个类A,它有一个方法convertToB,它的参数必须是类B的一个实例:

代码语言:javascript
复制
function A(){
  this.convertToB = function(elem){
    if (!(elem instanceof B)){ throw an error}
    ...
    ... 
  }
}

我想通过创建一个模拟对象来测试这段代码,当被问到它是否是B的一个实例时,会响应true

目前我不得不写一些测试

  1. 它(‘如果参数是字符串就抛出错误’)
  2. 它(‘如果参数是数组就抛出错误’)
  3. ..。

这有点烦人。我希望有这样的命令

代码语言:javascript
复制
 var fakeB = jasmine.createFake('B')

这样这个问题中的第一行代码就可以通过了。

EN

回答 2

Stack Overflow用户

发布于 2014-03-28 17:17:46

我的代码中有几十个地方和你的完全一样。茉莉花2.0的spyOn方法将完成这项工作。Jasmin1.0也是如此,但我不记得方法的调用/使用方式是否完全相同。举个例子:

代码语言:javascript
复制
var realB = new B();

// change realB instance into a spy and mock its method 'foo' behaviour to always return 'bar'
// it will still respond "true" to "realB instanceof B"
spyOn(realB, 'foo').and.returnValue('bar')

var realC = new C();

// C.baz is expecting instance of B to be passed as first argument
var result = C.baz(realB)

// assuming C.baz return realB.foo() concatenated with '123'
expect(result).toEqual('bar123');

Jasmine有大量间谍示例列表:http://jasmine.github.io/2.0/introduction.html

票数 6
EN

Stack Overflow用户

发布于 2016-03-20 09:34:07

我的执行情况如下:

代码语言:javascript
复制
function proxyConstructor(obj) {
  obj = obj || {};
  for (var key in obj) {
    this[key] = obj[key];
  }

  this.prop = 'runtime prop';
  this.instanceMethod(1);
}

var TestClass = jasmine.createSpy(`TestClass.constructor`).and.callFake(proxyConstructor);
TestClass.prototype.instanceMethod = jasmine.createSpy(`TestClass#instanceMethod`);
TestClass.staticMethod = jasmine.createSpy(`TestClass.staticMethod`);

var ins = new TestClass();
expect(ins).toBe(jasmine.any(TestClass)) // success
expect(ins.prop).toBe('runtime prop'); // success
expect(ins.instanceMethod.toHaveBeenCalledWith(1)) // success

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22654683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档