2016-10-21 2 views
0

ジャスミンをうっとりの仕事として走らせると、テストはうまくいっているように見えますが、最初は常に失敗と見なされます。問題がどこにあるのか分かりません。jasmine jsdomと酵素で反応したときにfalseになると予想されます

import React from 'react'; 
import { shallow, mount, render } from 'enzyme'; 
import Foo from './foo.react'; 
import jsDom from 'jsdom'; 

global.document = jsDom.jsdom(''); 
global.window = document.defaultView; 
Object.keys(document.defaultView).forEach((property) => { 
    if (typeof global[property] === 'undefined') { 
    global[property] = document.defaultView[property]; 
    } 
}); 

global.navigator = { 
    userAgent: 'node.js' 
}; 


describe("A suite", function() { 
    it("contains spec with an expectation", function() { 
    console.log(shallow(<Foo />)); 
    expect(shallow(<Foo />).contains(<div className="foo" />)).toBe(true);//.toBe(true) 
    }); 

    it("contains spec with an expectation", function() { 
    expect(shallow(<Foo />).is('.foo')).toBe(true); 
    }); 

    it("contains spec with an expectation", function() { 
    expect(mount(<Foo />).find('.foo').length).toBe(1); 
    }); 
}); 

結果判明

enter image description here

答えて

0

ファイルコンポーネント

import React, { PropTypes } from 'react'; 

const propTypes = {}; 

const defaultProps = {}; 

class Foo extends React.Component { 
    constructor(props) { 
    super(props); 
    } 

    render() { 
    return (
     <div className="foo"> </div> 
    ); 
    } 
} 

Foo.propTypes = propTypes; 
Foo.defaultProps = defaultProps; 

export default Foo; 

スペックに反応私は <div className="foo" />代わりのに私の復帰を変更する必要があります10

これでテストに合格します。

まだ違いはまだ分かっていません。私は、問題はあなたが<div className="foo"> </div>

contains完全に一致するかどうかを確認し、空のタグを持っているホワイトスペースであってもよいと思います

0

は、スペース文字を含む同じタグとは異なっています。可能な回避策については、このディスカッションも参照してください。elem.html()

関連する問題