调用Javascript类方法会收到错误“找不到变量”

时间:2019-05-17 22:12:41

标签: javascript jasmine es6-class teaspoon

运行茶匙茉莉花测试时,出现以下错误。

错误

  

ReferenceError:找不到变量:在中的Modify_create_favorite   http://localhost:3000/assets/favorite.self-67fd17843e64bfbeed401bd.js?body=1?body=1   (第49行)

favorite.js文件

class Favorites {

  static create(listing_id) {
    modify_create_favorite(find_favorite(listing_id));
  }

  static find_favorite(listing_id) {
    return $("#i-favorite-"+listing_id);
  }

  static modify_create_favorite(object) {
    object.removeClass('fa-heart-o').addClass('fa-heart').parent().attr('data-method','delete');
  }
}

茶匙茉莉花:

  it("will change the class", function() {
    fixture.set(favorite_html);
    Favorites.create('17');
    expect( $('#i-favorite-17', fixture.el) ).not.toHaveClass( 'fa-heart-o')
    expect( $('#i-favorite-17', fixture.el) ).toHaveClass( 'fa-heart')
    expect( $('#i-favorite-17', fixture.el).parent() ).toHaveAttr("data-method",'delete')    
    expect(jQuery).toBeDefined();
  });

1 个答案:

答案 0 :(得分:2)

<!DOCTYPE html> <html> <head> <title></title> </head> <body> <div id="objPanel"></div> <script type="text/javascript"> var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("objPanel").innerHTML = this.responseText; } }; xhttp.open("GET", "http://localhost:3002/obj", true); xhttp.send(); </script> </body> </html> 方法只能在不创建实例的情况下通过调用类来调用,因此在static内部应执行以下操作:

create

在当前的实现中,您的代码正在寻找一个名为Favorites.modify_create_favorite(Favorite.find_favorite(listing_id)) //or this.modify_create_favorite(this.find_favorite(listing_id)) 的函数,因为不知道这是您的类的方法。

有关modify_create_favorite()方法https://developer.mozilla.org/en-US/docs/Web/JavaScript/reference/Classes/static

的更多信息