所以我已经为我的组件创建了单元测试,但是需要一些单独的服务.但是,当我尝试注入它们时(正在测试的服务方法不是异步).
describe('SearchService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
SearchService
]
});
});
it("should build Url String", () => {
inject([SearchService], (searchService: SearchService) => {
spyOn(searchService, 'buildURL');
console.log("should be logging like a boss");
searchService.buildURL("test", "coursename", 2);
expect(searchService.buildURL).toHaveBeenCalled();
expect(searchService.buildURL("test", "coursename", 2)).toBe(['1']);
expect(searchService.buildURL("test", "coursename", 2)).toBeFalsy();
});
});
});
Run Code Online (Sandbox Code Playgroud)
注入从未实际运行回调!test识别它的声明但是没有错误地传递.
内部的console.log语句从不运行,并且测试设计为失败传递,因此我假设注入无法运行.
我有一个我构建的地图应用程序,需要一些地图图标在按下按钮后显示/消失,但我无法弄清楚当我从它的父项组件传入一个新的体育属性时如何设置它来重新渲染组件:
父加载组件:
<SimpleMap sports=[default value and future values go here] />
Run Code Online (Sandbox Code Playgroud)
简单的地图组件(简化):
constructor(props) {
(props);
this.state = {
events: [{venue: {lat: 2, lon: 1}}],
sports: ["baseball", "football", "paddle", "soccer", "boxing", "dart", "biking", "golf", "hockey", "inline-skating", "tennis", "volleyball", "skateboard", "kickball", "bowling", "pool", "ride", "hike", "ice-skating"]
};
};
componentWillReceiveProps (nextProps) {
this.setState({events: [{venue: {lat: 2, lon: 1}}],
sports: nextProps.sports});
console.log(nextProps.sports);
}
static defaultProps = {
center: {lat: 36.160338, lng: -86.778780},
zoom: 12,
sports: ["baseball", "football", "paddle", "soccer", "boxing", "dart", "biking", "golf", "hockey", …Run Code Online (Sandbox Code Playgroud) 使用setState()有奇怪的错误,我总是没有设置为state:
错误代码:
TypeError:无法读取undefined(...)的属性'setState'
class HelloWorld extends React.Component {
constructor() {
super();
this.state = {listings:[]};
};
componentDidMount (){
fetch('./javascripts/data.json').then(function(response) {
return response.json()
}).then(function(json) {
console.log('parsed json ', json.listings);
this.setState({listings: 'test string'});
}).catch((error) => {
console.log(error);
})
}
render () {
return (
<ListingUser userData={this.state.listings} />
);
}
}
ReactDOM.render(
<HelloWorld />,
document.getElementById('example')
);
Run Code Online (Sandbox Code Playgroud) 我有一些 Id 需要从强转换为数字,但是每当我使用 parseInt() 或 Number() 时,我都会得到一个双精度型小数
1.01038295007818e+016.0
Run Code Online (Sandbox Code Playgroud)
我需要将字符串转换为数字。