Ich habe immer folgenden Fehler, während ich versuche, folgende Testfall ausgeführt, die die URL validieren sollte. Bei Bedarf sollte die Funktion validateUrl der URL das Präfix "http: //" hinzufügen. Ich tue dies, weil die API Ich habe nicht diesen Präfix verwenden:Jest TypeError: Kann 'Speicher' von undefined nicht lesen
import userDetail from '../src/container/user-detail'
describe('UrlValidation',() => {
it('should be a valid string',() => {
var result = new userDetail()
result.validateUrl("google.com")
exept (result).toBe("http://google.com")
})
})
userDetail wie folgt aussehen:
import React, { Component } from 'react';
import { connect } from "react-redux";
class UserDetail extends Component {
renderUser(userData){
return (
<tr key={userData.id}>
<td>
{userData.name}
</td>
<td>
<a target="_blank" href={this.validateUrl(userData.website)}>{userData.website}</a>
</td>
<td>
{userData.address.city}
</td>
<td>
<a>
<img alt="edit" src="./media/edit-icon.svg" className="edit-img"></img>
</a>
</td>
</tr>
);
}
validateUrl(providedUrl){
var url = providedUrl;
var r = new RegExp('/^(http|https):\/\/[^ "]+$/');
if (!r.test(url)) {
return "http://" + providedUrl
} else {
return providedUrl
}
}
render() {
const {users} = this.props
console.log(users.map(user => this.renderUser(user)));
return (
<table className="table table-hover">
<thead>
<tr>
<th>Name</th>
<th>Website</th>
<th>City</th>
<th>Edit</th>
</tr>
</thead>
<tbody>
{users.map(user => this.renderUser(user))}
</tbody>
</table>
)}
}
function mapStateToProps({ users }){
return { users }; // { user } == { user: user }
}
export default connect(mapStateToProps)(UserDetail);
Ich habe keine Ahnung, was in der Definition mein Fehler ist.
Mein erster Gedanke, dass die Funktion validateUrl nicht zugänglich ist, aber es sollte sein.
Die Ausgabe sieht wie folgt aus:
[email protected] ~/dev/User-Manager/UserManagement $ npm test
[email protected] test /home/joshii/dev/User-Manager/UserManagement jest
FAIL tests/app.test.jsx UrlValidation ✕ should be a valid string (3ms)
● UrlValidation › should be a valid string
TypeError: Cannot read property 'store' of undefined 3 | describe('UrlValidation',() => { 4 | it('should be a valid string',() => { >5 | var result = new userDetail() 6 | result.validateUrl("google.com") 7 | exept (result).toBe("http://google.com") 8 | }) 9 | }) at new Connect (node_modules/react-redux/lib/components/connect.js:102:29) at Object.<anonymous> (__tests__/app.test.jsx:5:18)
Test Suites: 1 failed, 1 total Tests: 1 failed, 1 total Snapshots: 0 total Time: 0.744s, estimated 1s Ran all test suites. npm ERR! Test failed. See above for more details.
Haben Sie versucht, spöttisch reduing 'speichern' zu scherzen? –
@JohnKennedy Nein, aber ich benutze nur diese Klasse und gebe eine Zeichenfolge damit. Es benutzt nichts vom Redux-Laden, oder liege ich falsch? –
Ihre Root-Komponente ist in die 'Provider'-Komponente eingebunden, die' store' als Prop unterstützt. –