jasmine spyon

工作中遇到一个问题,有一个emailValidator函数,会在前端进行email的格式检查,成功后会在后台进行 email的唯一性检查。
后台检查需要模拟API,所以找到了spyon的and.callFake方法来改写已有的API

and.callFake--spy链式添加and.callFake相当于用新的方法替换spy的方法,比如:

describe("A spy, when configured with an alternate implementation", function() {
  var foo, bar, fetchedBar;
  beforeEach(function() {
    foo = {
      setBar: function(value) {
        bar = value;
      },
      getBar: function() {
        return bar;
      }
    };
    spyOn(foo, "getBar").and.callFake(function() {//指定callFake方法
      return 1001;
    });
    foo.setBar(123);
    fetchedBar = foo.getBar();
  });
  it("tracks that the spy was called", function() {
    expect(foo.getBar).toHaveBeenCalled();
  });
  it("should not effect other functions", function() {
    expect(bar).toEqual(123);
  });
  it("when called returns the requested value", function() {
    expect(fetchedBar).toEqual(1001);//执行callFake方法,返回1001
  });
});
it('TEST emailValidator() works', async () => {

    spyOn(api, "checkEmail").and.callFake((email) => {//specify callFake
      return new Promise( (resolve, reject) => {
        if(email!=='test@gmail.com'){
          resolve({"status":200})
        }else {
          let response = {}
          response.data = [{"email":"Existió"}]
          reject({'response':response})
        }
        })
    });

    let result0 = vm.emailValidator('')
    expect(result0).toEqual(['El correo electrónico es requerido\n'])

    let result1 = vm.emailValidator('wrong text')
    expect(result1).toEqual(['Correo electrónico inválido'])

    let result2 = await vm.emailValidator('test@gmail.com')
    expect(result2).toEqual(['Existió'])
  })

作者:孙进不后退
链接:http://www.jianshu.com/p/5254b4b1a5de
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,956评论 25 709
  • 第36届香港电影金像奖各奖项于昨晚揭晓。 曾几何时,金像奖颁奖前,媒体,影迷各自站队,为心水电影横刀立马。可惜啊可...
    Sir电影阅读 602评论 3 8
  • final关键字可以用来修饰非抽象类、非抽象方法和变量。final类不能够被继承,final类下面的方法默认是fi...
    零度沸腾_yjz阅读 230评论 0 0